【问题标题】:More than 1 connection in Transaction Scope?交易范围中有超过 1 个连接?
【发布时间】:2013-08-02 00:24:40
【问题描述】:

请检查下面的代码示例,我希望 A 类流程和 B 类流程都完成或不完成。下面的代码成功了吗?

    using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 30, 0)))
        {  

con.Open();
//do A type process
con.Close();

con.Open();
//do B type process
con.Close();


    scope.Complete();
        }

PS:(请不要建议使用 1 con,原因是我在这个链接(http://geekswithblogs.net/edison/archive/2009/04/05/a-simple-3-tier-layers-application-in-asp.net.aspx)上使用了 3 层架构,并且 AB 类型的进程是用一个打开的函数(genericdata 类)调用的并自动关闭它的连接。)所以上面的代码是我实际代码的解释。

【问题讨论】:

    标签: c# transactions 3-tier


    【解决方案1】:

    使用 DTC,它将充当您的 DB 层和数据库之间的层。这意味着在调用 .Complete() 之前,不会应用对 db 所做的任何更改。您使用哪个连接以及事务涉及多少个数据库并不重要。

    确保调用 .Complete() 并结束事务。甚至你可以有嵌套的事务范围

    范围1 范围2 范围3

    在上面,每当调用 Scope1.Complete 时,即使子作用域调用 Complete,数据也会被移动到数据库中

    【讨论】:

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