【发布时间】:2010-03-03 10:38:08
【问题描述】:
这个问题在这里的一个简单示例中不容易重现,但想知道是否有人有任何经验和提示,这里是问题:
- 使用实体框架
- 在应用程序中有很多点,其中 (1) 数据被写入某些 entity 表,例如客户,(2) 数据写入history表
- 这两个操作都使用实体框架,但是,它们使用不同的上下文
- 这些操作需要在一个事务中:即,如果一个无法写入,另一个不应写入,等等。
- 我可以用 TransactionScope 包装它们,
像这样:
using (TransactionScope txScope = new TransactionScope()) {
...
}
但这给了我:
Microsoft 分布式事务处理协调器 (MSDTC) 被禁用 网络交易。
我们的数据库管理员告诉我,MSDTC 被选择禁用并且无法安装。
因此,我正在尝试使用 MetadataWorkspace 创建我自己的 EntityConnection,并且我的想法是每个上下文都将使用相同的 EntityConnection。然而,事实证明,试图让它发挥作用几乎是不可能的,例如目前我继续收到上述错误,即使理论上两个上下文都使用 EntityConnection。例如,很难理解实体框架在哪里/为什么需要 MSDTC。
有没有人曾经走过这条路,有经验或代码示例可以分享?
【问题讨论】:
标签: entity-framework transactions msdtc