0

请检查下面的代码示例,我希望 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 )使用了3层架构-tier-layers-application-in-asp.net.aspx)和 AB 类型的进程是用一个函数(通用数据类)调用的,它会自动打开和关闭它的连接。)所以上面的代码是我实际代码的解释。

4

1 回答 1

1

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

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

范围1 范围2 范围3

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

于 2013-08-01T08:13:31.420 回答