Entity Framework 4.1,DBContext,如何在连接之间重用事务

时间:2012-01-03 18:10:47

标签: entity-framework transactions entity-framework-4.1

有没有办法在不重复使用DTC的情况下在不同连接之间重用事务? 我无法弄清楚如何做到这一点。

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 个答案:

答案 0 :(得分:1)

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