Dapper 저장 프로 시저에서 목록 반환

c# dapper

문제

나는 클래스에 대해 저장하고 싶은 더러운 메소드가 있습니다.

        using (var block = new TransactionBlock())
        {
            const string sql =
                "select * from Messages where statusId not in ('5','6')";
            var results = TransactionBlock.Connection.Query<OpenMessages>
            (sql,TransactionBlock.Transaction).ToList();
            block.Commit();
            return results;
        }

따라서 OpenMessages는 다음과 같습니다.

   public class OpenMessages
   {
      public List<string> MessageId { get; set; }
   }

다음 오류가 반환됩니다.

System.InvalidOperationException이 사용자 코드에 의해 처리되지 않았습니다. HResult = -2146233079 메시지 = ExecuteReader는 명령에 할당 된 연결이 보류중인 로컬 트랜잭션에있을 때 명령에 트랜잭션이 있어야합니다. 명령의 Transaction 속성이 초기화되지 않았습니다.

나는 잘 작동하고있는 다른 여러 가지 방법을 가지고 있습니다. 목록을 반환해야하는 것은 아닙니다.

수락 된 답변

트랜잭션을 매개 변수로 전달 중입니다. 이름을 붙이다:

var results = TransactionBlock.Connection.Query<OpenMessages>
        (sql,
   transaction: TransactionBlock.Transaction).ToList();

또한 실제로 저장 프로 시저 인 경우 다음과 같이 추가 할 수도 있습니다.

commandType: CommandType.StoredProcedure


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