私はクラスに対して保存したい、大まかな方法を持っています。
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