当根事务回滚时,嵌套事务会被回滚吗?

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

1个回答

7

nestedOne将加入根作用域,因此如果根作用域回滚,nestedOne也将回滚,但不包括一个单独的事务nestedTwo。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接