5

DALがdapper-dot-netを使用している場合、トランザクションを作成するにはどうすればよいですか?

私のc#winformアプリケーションはネットワークで使用され、データは中央のSQLサーバーに保存されます。

私のユースケースでは、トランザクションを使用する必要があります。dapperを使用してこれを行うことはできますか、それともNHibernateのようなものを使用する必要がありますか?

また、ストアドプロシージャを使用している場合、このフレームワークにリスクや制限はありますか?考えられる制限のためにアプローチを変更する必要がありますか?

4

2 に答える 2

9

sprocs の使用に制限はありません。dapper のリスクは、sprocs の場合と同じです。

これは、dapper でトランザクションを使用する方法の簡単な例です。

using (var connection = Db.GetConnection())
{
     connection.Open();
     IDbTransaction transaction = connection.BeginTransaction();
     try
     {
         var newId= connection.Query<int>(@"Select id from table1 where id=@id", new{id}, transaction).Single();
         connection.Execute(@"INSERT into table1 ...",new {p1, p2}, transaction);
         connection.Execute(@"INSERT into table2 ...",new {p1, p2}, transaction);
         transaction.Commit();
     }
     catch (Exception ex)
     {
         transaction.Rollback();
     }
}
于 2012-12-31T14:13:46.630 に答える
3

dapper は、ado.net トランザクションと暗黙的トランザクションの両方を使用できます。ado.net トランザクションの場合、通常どおりトランザクションを作成transactionし、メイン メソッドで使用可能なパラメータを介して提供します。暗黙的なトランザクションの場合は、TransactionScope通常どおり使用してください。

于 2012-12-31T23:40:03.100 に答える