TransactionScopeの動作
Requiredって、TransactionScope切ったら、その中で、Completeしないと、 外側までロールバックされるって、どういう事なのか・・・
古くはMTS、System.EnterpriseServicesと同様の総投票製で最終的なトランザクションの結果が確定するようですね。
簡単にいうとアビエントトランザクション(ルートトランザクション)とその配下のScopeからのCompleteはチェックビットを有効にしているだけで、実際のトランザクションが確定されるタイミングはアビエントトランザクションのDispose時に
- 全てのconsistencyビットがtrueならコミット
- 一つでもconsistencyビットがfalseならアボート
って感じの仕様になっています。
System.Transactions との動作-明示的プログラミング モデル
辺りに解説があります。