2012-01-03 50 views
1

有没有什么办法可以在不重复使用DTC的情况下重用不同连接之间的事务? 我想不出如何做到这一点。实体框架4.1,DBContext,如何重用连接之间的事务

using (TransactionScope ... 
{ 
    using (var db1 = new modelXEntities()) 
    { 
     db1.Database.Connection.EnlistTransaction(Transaction.Current); ??? 
     db1.SaveChanges(); ==>error 

     using (var db2 = new modelYEntities()) 
     { 
      db2.Database.Connection.EnlistTransaction(Transaction.Current); ???  
      db2.SaveChanges(); ==>error 

错误:底层提供失败的打开...

感谢。

回答

1

如果您想为单个事务进行多重连接,则必须使用分布式事务= MSDTC。原因是协调多个事务资源之间的事务需要特殊的处理(两阶段提交)。所有交易资源必须与协调交易的单独流程进行通信。这就是MSDTC(MS分布式事务处理协调器)提供的。