2つのトランザクションスコープがあり、1つは別のスコープ内にあります。コミットされた後に内部トランザクションスコープがロールバックされ、外部トランザクションスコープが完了しないかどうかを知りたいです。
ネストされているため、内部トランザクションはロールバックされます。
これはすべてではなく、ネストされたトランザクションの作成方法によって異なりますが、デフォルトではロールバックされます。
この記事 はTransactionScope
について深く掘り下げており、ほとんどの質問に答えるはずです。
配布されているかどうかは関係ありません。
ネストされたトランザクションスコープを開始するスコープオプションによって異なります。
デフォルトのオプションTransactionScopeOption.Required
を使用すると、ネストされたスコープは外部スコープと同じトランザクションに参加するため、外部スコープがロールバックすると、Complete
。
ただし、TransactionScopeOption.RequiresNew
を使用すると、ネストされたスコープは独自のトランザクションを開始し、外部スコープとは別に完了するため、外部スコープがロールバックしてもロールバックされません。
TransactionScopeOption.Suppress
を使用すると、ネストされたスコープは外部トランザクションに参加せず、非トランザクションで完了するため、外部トランザクションがロールバックした場合にロールバックされる作業の一部を形成しません。