当根目录回滚时,是否会回滚嵌套事务?

Age*_*ire 4 c# sql-server transactions transactionscope rollback

在这段代码中......

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

实际上,在这一个......

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

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

    // No committing, rollback 'rootScope'.
}
Run Code Online (Sandbox Code Playgroud)

什么交易将会陆续与根沿一个回-不会是唯一的nestedOne或两者nestedOnenestedTwo

Tam*_*mir 7

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

就像你有"RequireNew"选项从封闭事务中分离事务一样,你可以使用"Suppress"选项来停止该范围的事务.

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