C# 使用TransactionScope在一个事务中创建多个数据库(多个DBContext)

C# 使用TransactionScope在一个事务中创建多个数据库(多个DBContext),c#,sql-server,entity-framework,entity-framework-6,C#,Sql Server,Entity Framework,Entity Framework 6,我有两个DBContext(一个是模型优先,另一个是代码优先),它们连接到MSSQL中的两个不同数据库。 现在,当您从任何类调用SaveChanges时,它将使用TransactionScope类同时向两个数据库写入数据。代码如下所示 using (TransactionScope scope = new TransactionScope()) { using (Schema1Entities db1 = new Schema1Entiti

我有两个DBContext(一个是模型优先,另一个是代码优先),它们连接到MSSQL中的两个不同数据库。 现在,当您从任何类调用SaveChanges时,它将使用TransactionScope类同时向两个数据库写入数据。代码如下所示

        using (TransactionScope scope = new TransactionScope())
        {
            using (Schema1Entities db1 = new Schema1Entities())
            {
                db1.SaveChanges();
            }
            using (Schema2Entities db2 = new Schema2Entities())
            {
                db2.SaveChanges();
            }
            scope.Complete();
        }
该问题在运行时出现。据说

类型为“System.Data.Entity.Core.EntityException”的异常 在EntityFramework.SqlServer.dll中发生,但未在用户中处理 代码

其他信息:基础提供程序在打开时失败

内部异常消息-{“合作伙伴事务管理器 已禁用其对远程/网络事务的支持。(来自 HRESULT:0x8004D025)“}

已打开MSDTC,并且没有防火墙阻止MSDTC。
立即需要帮助。

根据问题下的评论,这解决了问题:

using (TransactionScope scope = new TransactionScope())
{
    using (Schema1Entities db1 = new Schema1Entities())
    using (Schema2Entities db2 = new Schema2Entities())
    {
        db1.SaveChanges();
        db2.SaveChanges();
    }
    scope.Complete();
}

引用的可能重复:已引用这些,但没有任何用处。AllSparl,David_如果您不使用
TransactionScope
,它会保存更改的文件,而不会出现任何问题?只是在黑暗中拍摄:您是否尝试将两个
SaveChanges
放在同一个using块中?(两个
都使用相邻的
行)。这太棒了。你的黑暗射击成功了。非常感谢