C#でDataAdapterとストアドプロシージャを使用してデータアクセスのトランザクション制御を行う方法は? 現在、DataAdapter 経由で 2 つのストアド プロシージャ コールを実行したいのですが、その上でトランザクション制御を行いたいと考えています。それを行う方法はありますか?
2 に答える
これを行うための推奨される方法は、トランザクション スコープを使用してこれを処理することです。両方のストアド プロシージャ呼び出しを呼び出すコードの本体を new で囲むだけです TransactionScope
。
using(TransactionScope scope = new TransactionScope())
{
// your ADO.NET code that calls sprocs ...
}
同じ接続で発生するデータベースへの呼び出しは、自動的に 1 つのトランザクションに結合されます。TransactionScopeOption
トランザクション スコープ内のコードが既存のトランザクションに参加するか、オプションのパラメーターを介して独自のトランザクションを開始するかを指定することもでき ます。
これは、呼び出しを 1 つのトランザクションに結合するための推奨される方法です。もう 1 つの方法は、呼び出して手動で DBTransaction を取得することです。Connection.BeginTransaction()
作業を実行してから呼び出しtran.Commit()
ます。
これを行う最も簡単な方法は、両方の呼び出しを TransactionScope でラップすることだと思います。このページの例を参照してください。
http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx