Dapper 및 매개 변수가있는 비 저장 프로 시저 쿼리 (CommandType = Text)

c# dapper

문제

Dapper에서 매개 변수가있는 SQL 조각을 호출하려고합니다. 그것은 저장 프로 시저가 아닙니다 (나는 매개 변수로 잘 작동합니다)

inputCustomerName = "Our Customer";
inputStationName  = Null;

    var parameters = new
    {
        customerName = inputCustomerName ,
        stationName = inputStationName    
    };     

    ...

    using (var dbConn = dataProvider.CreateConnection)
    {
        dbConn.ConnectionString = connectionString;
        dbConn.Open();
        returnValue = dbConn.Query<T>(sql: sql, commandType: commandType, param: parameters);
        dbConn.Close();
    }

SQL의 관련 부분은 다음과 같습니다.

"    ...

     WHERE 
        Customer = ISNULL(@customerName,Customer)
        AND Station = ISNULL(@stationName,Station)
";

"DynamicMethod에 대한 잘못된 유형 소유자"가 계속 나타납니다. (예외적 인 객체 대신 DynamicParameters를 사용할 때도 마찬가지입니다.)

SQL은 데이터베이스 자체에서 정상적으로 실행됩니다 (@customerName 및 stationName을 선언하고 @populate하면).

나는 누군가가 나에게 계몽 할 수 있는가?

수락 된 답변

대답은 결국 코드에 포함되지 않은 문제였습니다. 그 문제는 철저히 사과합니다.

문제는 T 가 인터페이스라는 것이었고, 이것이 Dapper를 폭파시키는 원인이었습니다. 두포에는 쿼리에 대한 형식 매개 변수로 인터페이스가 아닌 클래스 만 사용할 수 있다는 것을 의미합니다. 비록 내가 그 제한이 명시 적으로 언급 된 것을 본 적이 없지만.

부끄러움, (하지만 나는 몇 가지 이유를 상상할 수있다)



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