4

このコードでは..

public static TransactionScope CreateTransactionScope(bool createNew = false)
{
    return new TransactionScope(
        createNew ? TransactionScopeOption.RequiresNew : TransactionScopeOption.Required,
        new TransactionOptions() { IsolationLevel = IsolationLevel.ReadCommitted });
}

実はこの中に…

using (TransactionScope rootScope = CreateTransactionScope())
{
    using (TransactionScope nestedOne = CreateTransactionScope())
    { nestedOne.Complete(); }

    using (TransactionScope nestedTwo = CreateTransactionScope(true))
    { nestedTwo.Complete(); }

    // No committing, rollback 'rootScope'.
}

ルート トランザクションと一緒にロールバックされるトランザクションはどれnestedOneですか。nestedOnenestedTwo

4

1 に答える 1

7

ネストされたOneはルートスコープに参加するため、ルートスコープがロールバックされる場合、nestedOneもロールバックされますが、個別のトランザクションであるnestedTwoはロールバックされません。

トランザクションを囲んでいるトランザクションから分離する「RequireNew」オプションがあるように、そのスコープのトランザクションを停止する「Suppress」オプションを持つことができます。

トランザクションの動作に関する優れたレッスンを提供するMSDNの次のリストをご覧ください。 http://msdn.microsoft.com/en-us/library/ms172152(v=vs.90).aspx

于 2012-07-23T07:55:06.647 に答える