매개 변수를 추가하지 않는 Dapper

dapper informix odbc sql

문제

복잡한 쿼리에 Dapper를 사용하여 이전에 NH에 있던 손실 된 오버 헤드를 제거하려고합니다.

나는 다음과 같은 질의를 가지고있다. (이것은 상당히 줄어들었다.)

SELECT DISTINCT *
FROM  tasks t 
WHERE t.initials = @UserInits

다음과 같이 우리 저장소를 통해 호출됩니다.

taskRepo.RawExec<TaskListItemDTO>(Query,new {UserInits = "SAS"})

DapperExec의 구현은 다음과 같이 구성됩니다.

public IEnumerable<T> RawExec<T>(string SQL, object param)
{
   return _session.Connection.Query<T>(SQL,param);
}

그러나 Dapper는 쿼리에 매개 변수를 추가하는 것으로 보이지 않으므로 구문 오류가 발생합니다.

우리가 ODBC를 통해 Informix에 연결하는 데 도움이됩니다.

감사

코드 샘플 업데이트 :

미안 그것은 매우 오랫동안 잡았고, 일로 매우 바빴다! 다음은 sys.all_objects (systables?)를 param 값 1 또는 0으로 간단하게 쿼리해야하는 MS SQL (2008) Server의 샘플입니다. 그러나이 샘플에서는 ODBC가 명명 된 params를 사용하지 않으므로이 방법은 작동하지 않습니다 .

using Dapper;
using DapperSQL;
using System.Collections.Generic;
using System.Data;
using System.Data.Odbc;

namespace DapperTests
{
    public class SQLEx
    {
        private OdbcConnection GetConnection()
        {
            var cnn = new OdbcConnection("DSN=ODBCSOURCE");
            cnn.Open();

            // wrap the connection with a profiling connection that tracks timings 
            return cnn;
        }

        public IEnumerable<object> DapperTest()
        {
            using (OdbcConnection conn = GetConnection())
            {
                return conn.Query("SELECT * FROM sys.all_objects where is_ms_shipped = ?", new { is_ms_shipped = 1 });
            }
        }
}

인기 답변

이 오래된 게시물 알고, 그냥 쿼리 대신 SP를 사용하십시오,이 링크를 확인하십시오. Dapper ODBC 저장 프로 시저를 사용하여 입력 매개 변수 , sybase odbc Sp, 모든 ODBC를 사용하여 동일한 기술을 사용하여, 그것을 Informix에서 작동합니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow