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されるのか・・・。
もし、これが仕様なら、相当分りずらい動作じゃないかなぁ・・・


誰か分り易い解説を、お願いしますですよ。