调用transaction.complete()

时间:2016-04-20 04:56:08

标签: c# sql-server transactionscope msdtc

我可以在调用 scope.complete()后回滚交易吗?嵌套事务会在这种情况下工作吗?还有其他选择吗?我被迫添加scope.complete,以便正确调用 MyService 。但我想在最后回滚交易。

3 个答案:

答案 0 :(得分:2)

不,这不是交易的工作方式。完成事务后,该范围将关闭,您无法在其他地方重复使用该范围。此外,一旦事务完成,就无法回滚。

您需要将两个事务放在同一范围内,以便您可以完成它们或将它们重新组合在一起。

答案 1 :(得分:2)

您可以拥有嵌套范围。必须完成所有范围才能完成交易。范围!=交易。

因此内部范围可以完成,外部范围可以回滚。这将有效地回滚交易。

答案 2 :(得分:1)

耐久性"交易的ACID属性的一部分将不允许您这样做。 提交的事务无法回滚。 而是调用" BillImportProxy.ImportPendingUtilityBills"来自同一交易范围的方法。