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は合法ですか? はい、理由を学ぶ