【发布时间】:2014-07-08 11:55:14
【问题描述】:
我偶然发现了一个问题,但我找不到答案(或者我的谷歌技能真的很垃圾)。
我们的解决方案是一个 ASP MVC4 C# 网站和多个类库。我们使用 MS SQL2008 和 EntityFramework 6。
假设我有 Foo 和 Bar 对象类型。 Foo 包含一个 Bar 对象。保存 Foo 后,我必须保存 Bar。保存 Foo 和 Bar 的方法在不同的类库中定义,每个库都有自己的实体模型,其中包含来自相同基础的相关模式的表。现在的问题是我使用事务,调用保存 Bar 的方法导致事务级别升级“MSDTC 禁用”异常。
有没有办法避免必须使用 MSDTC 并仍然使用引用同一基础的不同实体模型?
【问题讨论】:
-
连接字符串是否完全相等?
-
嗯,这可能吗?字符串之间的区别在于名称和元数据。
-
如果您连接到不同的服务器,事务必须是这些服务器之间的分布式事务。而且,我想记住,检查它是否是同一台服务器的方式与连接字符串有关。
-
看这个:[什么服务器属性使 TransactionScope 升级到 MSDTC?][1] 和这个:[TransactionScope 在某些机器上自动升级到 MSDTC?][2] [1]:dba.stackexchange.com/questions/14318/… [ 2]:stackoverflow.com/questions/1690892/…
-
我的应用配置如下所示:
标签: c# entity-framework transactions msdtc escalation