【发布时间】:2016-04-20 04:56:08
【问题描述】:
我可以在调用 scope.complete() 后回滚事务吗?在这种情况下嵌套事务会起作用吗?还有其他选择吗。我不得不添加 scope.complete 以便正确调用 MyService。但我想在最后回滚事务。
【问题讨论】:
标签: c# sql-server transactionscope msdtc
我可以在调用 scope.complete() 后回滚事务吗?在这种情况下嵌套事务会起作用吗?还有其他选择吗。我不得不添加 scope.complete 以便正确调用 MyService。但我想在最后回滚事务。
【问题讨论】:
标签: c# sql-server transactionscope msdtc
您可以有嵌套范围。所有范围都必须完成才能使事务也完成。范围!=事务。
所以内部作用域可以完成,外部作用域可以回滚。这将回滚有效的事务。
【讨论】:
不,这不是交易的运作方式。一旦你完成了一个事务,这个范围就关闭了,你不能在其他地方再次使用它。另外,事务一旦完成,就无法回滚。
您需要将两个事务放在同一范围内,以便您可以完成它们或将它们一起回滚。
【讨论】:
事务的 ACID 属性的“持久性”部分不允许您这样做。 一个提交的事务不能回滚。 而是从同一事务范围调用“BillImportProxy.ImportPendingUtilityBills”方法。
【讨论】: