在此代码中..
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
?
答案 0 :(得分:7)
nestedOne将加入根作用域,因此如果根作用域将回滚,nestedOne也将回滚,但不是nestedTwo,这是一个单独的事务。
就像你有“RequireNew”选项那样从封闭事务中分离事务,你可以使用“Suppress”选项来停止该范围的事务。
查看MSDN中的以下列表,该列表提供了有关事务行为的精彩课程。 http://msdn.microsoft.com/en-us/library/ms172152(v=vs.90).aspx