Jer*_*emy 2 .net msdtc entity-framework distributed-computing
我有一个应用程序保存到数据库(使用实体框架)并在单个保存中将文档保存到Sharepoint.我正在尝试将MSDTC与TransactionScope一起使用.
我的EF插入逻辑的一部分包括将外键列表传递给数据层.该层从db中检索"foreign key'd"对象,然后将其添加到主对象.奇怪的是,这适用于第一个外键项目,但在第二个时出现以下消息失败.
System.Data.EntityException:基础提供程序在Open上失败.---> 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
Run Code Online (Sandbox Code Playgroud)
也许我不应该从数据库中检索对象?我错过了在EF中引用关系的简单方法吗?
您需要DB服务器上的DTC,Sharepoint服务器以及运行代码的计算机才能运行并启用网络访问(右键单击Distributed Transaction Coordinator"组件服务"管理单元中节点上的"属性" ,确保Network DTC Access已选中,并且Allow Remote Clients并且在每台机器上检查入站和出站通信(您可以删除其中的一些,但首先使其工作).
第一个调用有效,因为它只与本地DTC通信 - 一旦它尝试使用远程DTC登记tx,它就会失败.
| 归档时间: |
|
| 查看次数: |
2706 次 |
| 最近记录: |