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还是两者nestedOne兼而有之nestedTwo

4

1 回答 1

7

nestedOne 将加入根作用域,因此如果根作用域回滚,则nestedOne 也会回滚,但不包含作为单独事务的nestedTwo。

就像您具有将事务与封闭事务分开的“RequireNew”选项一样,您可以具有停止该范围内的事务的“抑制”选项。

查看 MSDN 中的以下列表,该列表提供了有关事务行为的重要课程。 http://msdn.microsoft.com/en-us/library/ms172152(v=vs.90).aspx

于 2012-07-23T07:55:06.647 回答