5

私は TransactionScope について読んでいて、ADO.Net トランザクションとの相互運用性について質問がありました。現在、それぞれがストアド プロシージャを呼び出し、独自の個々のトランザクションを開始およびコミットするいくつかのデータ アクセス メソッドがあります。簡単な定型的なもので、メソッドは次のようになります。

sqlCommand = //create SQLCommand with Stored proc
SqlTransaction myTransaction = myConnection.BeginTransaction();
sqlCommand.Transaction = sqlTransaction;
sqlCommand.Execute();
sqlTransaction.Commit();

私は物事を少し単純化しましたが、あなたはその考えを理解しています。

これらのクラス メソッドのうち 2 つを連続して呼び出し、ビジネス レイヤーからチームとしてコミットまたはロールバックする必要があります。データ メソッドを変更できないため、2 つの呼び出しを TransactionScope ブロックに入れることを考えていました。

これを行う場合、TransactionScope を作成するときにどのようなパラメーターを使用すればよいですか? 私はすでに TransactionScopeOption.RequiresNew オプションを使用してこれを試しましたが、うまくいくように見えますが、それは私が実験しているだけであり、それが正しいかどうかはわかりません。(ここで、これらは同じ SQL サーバー上で実行される SQL トランザクションのみであることに注意してください。)

TransactionScope には、COM+ トランザクションを処理するためのコンストラクター オプションがあることがわかりました。私は ADO.Net トランザクションを使用しているため、ここで関係がありますか? アドバイスをありがとう。

4

1 に答える 1

8

こちらの TransactionScope ドキュメントは、開始するのに適した場所です。

基本的に、ADO レベルでのトランザクションの処理は不要になります。接続は、既存のアンビエント トランザクションを自動的に考慮します (デフォルト)。

接続文字列を使用して、接続がアンビエント トランザクションに参加する方法を変更することもできることに注意してください。このリンクは詳細を提供します。

「真」を募集します。true は、SQL Server 接続プーラーが作成スレッドの現在のトランザクション コンテキストに接続を自動的に登録することを示します。

于 2009-11-23T22:50:48.577 に答える