我正在尝试将两个TransactionScope包装在另一个TransactionScope中,但是当我运行该程序并在第二个事务范围中触发错误时,第一个事务不会回滚。是否有可能回滚两者,或者我最好不做其他事情。由于TransactionScope锁定了表中的行并且无法正常工作,我不得不将它们分开。
Using objTransaction As New Transactions.TransactionScope(Transactions.TransactionScopeOption.RequiresNew, New TimeSpan(0, 10, 0))
Using objTransaction As New Transactions.TransactionScope(Transactions.TransactionScopeOption.RequiresNew, New TimeSpan(0, 10, 0))
'Scope - 1
End Using
Using objTransaction As New Transactions.TransactionScope(Transactions.TransactionScopeOption.RequiresNew, New TimeSpan(0, 10, 0))
'Scope - 2
End Using
End Using
答案 0 :(得分:2)
您使用的是错误的交易范围选项。要使内部TransactionScopes在父作用域中登记,您需要使用TransactionScopeOption.Required。
当您使用RequiredScopeOption of Required时,它将在环境事务中登记(如果存在)。当您使用RequiredNew时,它不会在环境事务中登记。