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