我有一个应用程序正在保存到数据库(使用实体框架)并在一次保存中将文档保存到 Sharepoint。我正在尝试将 MSDTC 与 TransactionScope 一起使用。
我的部分 EF 插入逻辑包括将外键列表传递给数据层。该层从数据库中检索“外键”对象,然后将其添加到主对象。奇怪的是,这适用于第一个外键项目,但在第二个项目上失败,并显示以下消息。
System.Data.EntityException:基础提供程序在打开时失败。---> System.Transactions.TransactionManagerCommunicationException:分布式事务管理器 (MSDTC) 的网络访问已被禁用。请使用组件服务管理工具在 MSDTC 的安全配置中启用 DTC 以进行网络访问。
MSDTC 在第一次通过时启用并工作,但不是第二次。我假设当我进行多个选择调用时,上下文会以某种方式变得混乱?
这是我的逻辑:
//Create new order
foreach(int lineItemId in lineItems)
{
//Retrieve the LineItem object from db
//Add the LineItem object to the Order
}
//Save using EF
也许我不应该从数据库中检索对象?我错过了一种简单的方法来引用 EF 中的关系吗?