34

私はいつも使いたいと思っていますTransactionScopeが、人々がそれについて何を見ているのか理解できません。それでは、例を見てみましょう:

using(TransactionScope tran = new TransactionScope()) {
    CallAMethodThatDoesSomeWork1();
    CallAMethodThatDoesSomeWork2();
    tran.Complete();
}

最も基本的な質問: " " をどのように記述すれば、" " が例外をスローしたCallAMethodThatDoesSomeWork1()場合にアクションをロールバックするかを知ることができますか?CallAMethodThatDoesSomeWork2()

4

1 に答える 1

23

呼び出すメソッド内のコードは、トランザクションを認識し、アクティブなトランザクションに参加する必要があります。これは、リソースマネージャーであるクラスを作成または使用することを意味します(独自のリソースマネージャーの実装を参照) 。

これを行うには、 IEnlistmentNotificationを実装し、トランザクションに参加します。トランザクションが完了すると、トランザクションマネージャーはそのインターフェイスで定義されたメソッドを呼び出して、コードが作業を実行/元に戻すことができるようにします。

于 2013-01-04T16:30:18.030 に答える