次のことを考慮してください。
using (var outerScope = new TransactionScope())
{
InsertDataInTableOne();
InsertDataInTableTwo();
InsertDataInTableThree();
outerScope.Complete();
}
ここで、トランザクションInsertDataInTableOne
の外部で実行する必要があります。outerScope
これは単純化された表現ですTransactionScope
。チェーンの複数の呼び出しが作成されるためInsertDataInTableOne
、作成の外部に呼び出しを置くことはできませんTransactionScope
。
また、これは良い習慣ではないかもしれないことも知っており、私たちはまともな修正に取り組んでいます。しかし、現時点ではこの迅速な修正が必要です。
using (var outerScope = new TransactionScope())
{
using (var innerScope = new TransactionScope(TransactionScopeOption.RequiresNew))
{
InsertDataInTableOne();
innerScope.Complete();
}
InsertDataInTableTwo();
InsertDataInTableThree();
outerScope.Complete();
}
それはうまくいきませんでした。最初にwithを作成し、次にTransactionScope
。を作成してみました。Suppress
RequiresNew
それで、あなたが?にいるという事実を事実上無視して、データベースにすぐにデータを挿入することは可能TransactionScope
ですか?
接続はこれらのメソッドの外部で行われます(実際には、呼び出されるサービスに入るとき)。