1

.Net 2.0アプリケーションで作業しており、データベーストランザクションをコードでラップする必要があります。バックエンドはSQLServer2008です。

私は数年間.netを離れていましたが、最後にトランザクション処理を行ったのは、サービスされたコンポーネントを使用した.Net1.1でした。私はTransactionScopeについて知っていて、それが今のことを行うのに良い方法かどうか疑問に思っていました。

また、.Net 3.5では、これを行う他の方法があると思います。たとえば、WCFを使用しますか?誰かが私を1つか2つの記事に向けることができるかどうか疑問に思っています。どうもありがとう。

4

1 に答える 1

1

TransactionScope は、チェックしておく限り、良い方法です。すべての ADO.Net プロバイダーは System.Transactions オブジェクトを認識しているため、TransactionScope の下で動作する場合、バックエンド トランザクションに適切に登録されます。

2 つの落とし穴があります。

. トランザクションの IsolationLevel プロパティを使用して、既存のトランザクションの分離レベルを判断できます。

  • 分散トランザクション。トランザクション スコープ内で2 番目のADO.Net 接続を使用すると、両方のトランザクションが同じデータベースを指している場合でも、TransactionScope は最初の接続と一緒にそれを分散トランザクションに登録します。トランザクション スコープ内で 1 つの接続のみを使用するようにしてください。

技術的には、最後のポイントは任意のリソース マネージャーの使用に適用されますが、データベース接続以外の RM を使用することはまずありません。もしそうなら、分散トランザクションに参加することはとにかく適切なアクションです。

于 2009-11-20T22:43:48.833 に答える