TransactionScope
動作に納得がいかない事があります。
[Test] public void ScopeTest() { using (TransactionScope scope = new TransactionScope()) { Transaction around = Transaction.Current; using (TransactionScope scope2 = new TransactionScope(TransactionScopeOption.Required)) { Transaction inner = Transaction.Current; Assert.IsTrue(around.TransactionInformation.Status == TransactionStatus.Active,"0"); Assert.IsTrue(inner.TransactionInformation.Status == TransactionStatus.Active, "1"); } Assert.IsTrue(around.TransactionInformation.Status == TransactionStatus.Active, "2"); scope.Complete(); } }
Requiredって、TransactionScope切ったら、その中で、Completeしないと、
外側までロールバックされるって、どういう事なのか・・・
このテストコードでいう所のinnerってTransactionだけがロールバックされるなら、
まだ理解出来ない事もないけど、
なぜ、aroundってTransactionまでAbortされるのか・・・。
もし、これが仕様なら、相当分りずらい動作じゃないかなぁ・・・
誰か分り易い解説を、お願いしますですよ。