回滚嵌套事务

时间:2016-03-06 17:21:08

标签: c# transactions

我正试图在Nested中测试c#次交易的行为。所以我创建了两个TransactionScope个对象。在outerScope(root)中,我故意插入重复的PK值,因此它会抛出异常和事务ROLLS BACK。但后来我创建了一个嵌套TransactionScope,其中TransactionScopeOption设置为RequiresNew,这意味着它将单独执行,并且回滚outerScope将对innerScope没有影响。但它不会提交innerScope内部的事务代码,因为它没有到达下一行代码和中断。

所以我向大家提出的问题是,如何测试嵌套事务行为?请告知我必须给出这个概念的演示,我对如何通过代码示例解释这个问题完全无能为力。

以下是代码:

    try
    {
       using (var outerScope = new TransactionScope(TransactionScopeOption.Required, option))
       {
          using (conn)
          {
             conn.Open();
             method1();
             using (var innerScope = new TransactionScope(TransactionScopeOption.RequiresNew, option))
             {
               method2();
               innerScope.Complete();
             }

          }
          outerScope.Complete();
      }
    }
    catch (TransactionAbortedException tex)
    {
       Console.WriteLine(tex.Message);
    }

0 个答案:

没有答案