【问题标题】:Transactions .NET交易.NET
【发布时间】:2012-05-29 14:33:50
【问题描述】:

我刚开始在 .NET 中使用事务,但遇到了问题。在一个函数中(在我的 DAL 中),我使用事务范围。在函数结束时,我触发 Complete() 函数。

现在我对该函数进行了测试,该函数也使用了事务范围。在这个测试函数结束时,我不会触发 complete() 函数,因此我的测试不会用测试数据填充数据库。这似乎工作正常。

我现在的问题是,如果我在我的测试函数中触发了 complete(),事务似乎完成了两次。这似乎是合乎逻辑的,因为我触发 Complete() 两次......但是有没有办法避免这种情况?有没有办法在不执行两次作用域的情况下触发 Complete() 函数两次...肯定有嵌套事务的方法...?

【问题讨论】:

    标签: .net transactions


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      尝试使用 RequiresNew 选项创建您的内部 TransactionScope:

      new TransactionScope(TransactionScopeOption.RequiresNew)
      

      【讨论】:

      • 谢谢,我将首先研究这些嵌套事务和 TransactionScopeOption。我尝试了 RequiresNew,它解决了我以前的问题,但这引发了新问题。
      【解决方案3】:

      我的理解是,如果您在不调用 Complete 的情况下 Dispose ,则事务将被滚动,TransactionScope supports nested transactions 也是如此。混合搭配,你应该能够回滚测试所做的所有工作。

      【讨论】:

        猜你喜欢
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多