2012-12-31 10 views
5

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

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

私の使用例では、トランザクションの使用が必要です。これをdapperを使って行うことはできますか、またはNHibernateのようなものを使う必要がありますか?

また、ストアドプロシージャを使用している場合、このフレームワークにリスクや制限はありますか?可能性のある制限のために私のアプローチを変更する必要がありますか?私はDapperのでストアドプロシージャ、あなたが持っているリスクを使用して任意の制限に実行していない

答えて

8

が同じリスクあるあなたはここでストアドプロシージャ

でなければなりませんDapperの

でトランザクションを使用する方法についての簡単な例であります
using (var connection = Db.GetConnection()) 
{ 
    connection.Open(); 
    IDbTransaction transaction = connection.BeginTransaction(); 
    try 
    { 
     var newId= connection.Query<int>(@"Select id from table1 where [email protected]", 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(); 
    } 
} 
+0

:)私はIDbTransactionとしてトランザクションを宣言するのを忘れています。 – mosesfetters

+0

ご意見ありがとうございます。また、ストアドプロシージャの使用中に制限や問題は発生しないことを願っています。実際、私はドラッパーで新しいので、私はそれに尋ねました。 – DPSoni

+0

@DPSoni他のADO.NETの使用法と同じように動作します –

3

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