【问题标题】:Rollback the transaction after calling transaction.complete()调用 transaction.complete() 后回滚事务
【发布时间】:2016-04-20 04:56:08
【问题描述】:

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

【问题讨论】:

    标签: c# sql-server transactionscope msdtc


    【解决方案1】:

    您可以有嵌套范围。所有范围都必须完成才能使事务也完成。范围!=事务。

    所以内部作用域可以完成,外部作用域可以回滚。这将回滚有效的事务。

    【讨论】:

      【解决方案2】:

      不,这不是交易的运作方式。一旦你完成了一个事务,这个范围就关闭了,你不能在其他地方再次使用它。另外,事务一旦完成,就无法回滚。

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

      【讨论】:

        【解决方案3】:

        事务的 ACID 属性的“持久性”部分不允许您这样做。 一个提交的事务不能回滚。 而是从同一事务范围调用“BillImportProxy.ImportPendingUtilityBills”方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-09-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-12
          相关资源
          最近更新 更多