我有两个DbContexts(一个模型优先,另一个是代码优先),它连接到MSSQL中的两个不同的数据库。 现在,当您从任何类调用SaveChanges时,它会使用TransactionScope类同时将数据写入两个数据库。代码如下所示。
using (TransactionScope scope = new TransactionScope())
{
using (Schema1Entities db1 = new Schema1Entities())
{
db1.SaveChanges();
}
using (Schema2Entities db2 = new Schema2Entities())
{
db2.SaveChanges();
}
scope.Complete();
}
问题在运行时引发。这是说
EntityFramework.SqlServer.dll中发生了'System.Data.Entity.Core.EntityException'类型的异常,但未在用户代码中处理
其他信息:基础提供商在Open上失败。
内部异常消息 - {“合作伙伴事务管理器已禁用其对远程/网络事务的支持。(HRESULT异常:0x8004D025)”}
打开MSDTC,没有防火墙阻止MSDTC。 立即需要帮助。
答案 0 :(得分:1)
根据问题的评论,这解决了这个问题:
using (TransactionScope scope = new TransactionScope())
{
using (Schema1Entities db1 = new Schema1Entities())
using (Schema2Entities db2 = new Schema2Entities())
{
db1.SaveChanges();
db2.SaveChanges();
}
scope.Complete();
}