TransactionScopeOptionについて3つの質問があります。私は夢中になり、オンラインでアンサーを見つけることができません。C#/ WCF TransactionScopeOption.Required
a実際に考えると難しい時がありますが、このコードを書く必要がありますか?なぜ私はちょうどDoSomething2()をTransactionScope4の外に置くべきではないのですか?
B.この後:TransactionScope4.Complete()、TransactionScope3もCompleteと同じですか?
C. WCFでは、クライアントでTransactionScopeを使用していくつかのサービスのメソッドを呼び出すと、各メソッドはクライアントまたはCreatで作成したTransactionScopeを使用します。なぜ新しいものを作り出すべきなのでしょうか?メソッドが新しいものを作成する場合は、という属性はなぜですか:TransactionAutoComplete exsist?
using (TransactionScope TransactionScope3 = new TransactionScope())
{
Service1.DoSomething1();
using (TransactionScope TransactionScope4 = new TransactionScope(TransactionScopeOption.Required))
{
Service1.DoSomething2();
TransactionScope4.Complete();
}
TransactionScope3.Complete();
}
最初にすばらしいコメントをいただきありがとうございます。第二に、あなたのアンサーから質問Cまで、クライアントでTransactionScopeを作成しなかった場合にのみ、TransactionAutoCompleteを使用する必要があります。私は正しい? –
Btw、私はあなたのアンサーを有用にすることができないのを知ったので、私はちょうどそれを言うでしょう:あなたは非常に便利でした!ありがとう。 –
すべてのネストされたトランザクションスコープでComplete()を呼び出す必要があるかどうかわかりません。それをテストしたいかもしれませんが、 'TransactionAutoComplete'設定は基本的にWCFに' Complete() 'を自動的に呼び出すように指示します。私はクライアントがそれを作成したとしても、サーバのトランザクションスコープでまだ完全()を呼び出すのがベストプラクティスであると思います。 (換言すれば、あなたのケースでは「真」に設定することをお勧めします) – CodingWithSpike