我相信我理解了TransactionScopeOption.Suppress
和TransactionScopeOption.Required
,但是我很难理解TransactionScopeOption.RequiresNew
的作用。根据我读过的最后一个解释,以下两个代码块的功能是否相同?这是否准确地表示了RequiresNew
的含义?
using (var ts1 = new TransactionScope(TransactionScopeOption.RequiresNew))
{
DoStuff();
ts1.Complete();
}
和
using (var ts2 = new TransactionScope(TransactionScopeOptions.Suppress))
{
using (var ts3 = new TransactionScope())
{
DoStuff();
ts3.Complete();
}
ts2.Complete(); // not required but recommended for consistency's sake
}
RequiresNew
:包含的代码依赖于事务,但必须独立提交或回滚。Suppress
:包含的代码执行自己的补偿,因此不能成为事务的一部分。” 这意味着(对我来说)“提交”或“回滚”RequiresNew
TransactionScope 不能被操纵或依赖于外部事务 - 两者都不会相互影响。这就是Suppress应该对其内部Required TransactionScope所做的事情。 - Jaxidian