'?'와 함께 Dapper를 사용합니다.

c# dapper db2

문제

Dapper를 사용하여 DB2 서버와 통신하려고합니다. DB2 서버는 기본 제공 매개 변수를 지원하지 않습니다. 각 매개 변수에 대한 질의에 물음표가 올 것으로 예상됩니다. Dapper와 함께이를 지원할 수있는 방법이 있습니까? 어쩌면 Dapper가 @Name 모두 바꿀 수 ? 쿼리를 호출하기 전에? 그렇다면 Dapper가 매개 변수를 순서대로 생성합니까?

그렇지 않은 경우, 최신 DB2 클라이언트 드라이버는 명명 된 매개 변수를 지원하지만 기본적으로 해제되어있는 것으로 보입니다. 나는 그것을 켜는 방법을 알아낼 수 없다. 클라이언트의 db2cli.ini [COMMON] 섹션에 해당 매개 변수를 추가하려고 시도했지만 동작이 변경되지 않았습니다. 그것은 OleDB 드라이버 용이었습니다.

업데이트 : 나는 .NET 드라이버를 시도했다. 그 하나는 변수 이름을 구문 분석하는 것,하지만 난 여전히 이상한 오류를 실행하면 :

{ "오류 [07004] [IBM] [DB2 / NT64] SQL0313N 매개 변수화 된 커서에 대한 EXECUTE 문의 변수 수, OPEN 문의 변수 수 또는 OPEN 문의 인수 수와 같지 않음 필요한 값의 수입니다. "}

내 진술은 다음과 같습니다.

INSERT INTO XD.ALERT (PERFORMANCE_ID, CATEGORY, TITLE, DESCRIPTION, DATETIME) VALUES(1234, :Level, :AlertID, :AlertDesc, :DateTime)

INSERT가 EXECUTE로 계산됩니까? 지금까지 내가 쿼리에서 네 개의 매개 변수를 사용하고 명령 개체에서 네 개를 사용할 수 있음을 알 수 있습니다. (나는 SqlMapper.cs 직접 사용하고 있으며 디버거에서 모든 것을 볼 수 있습니다.)

인기 답변

이것을 시도 할 수 있습니다 :

    public void SaveAlert(int? level, int? alertId, string alertDesc, DateTime date)
    {            
        _conn.Execute("INSERT INTO XD.ALERT(PERFORMANCE_ID, CATEGORY, TITLE, DESCRIPTION, DATETIME) VALUES(1234, @Level, @AlertID, @AlertDesc, @DateTime)",                
            new {
                Level = level,
                AlertId = alertId,
                AlertDesc = alertDesc,
                DateTime = date
            });
    }


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.