gpt4 book ai didi

.net - 将 MSDTC 与 Entity Framework 结合使用时提供程序失败

转载 作者:行者123 更新时间:2023-12-02 06:45:08 25 4
gpt4 key购买 nike

我有一个应用程序正在保存到数据库(使用 Entity Framework )并在一次保存中将文档保存到 Sharepoint。我正在尝试将 MSDTC 与 TransactionScope 一起使用。

我的部分 EF 插入逻辑包括将外键列表传递到数据层。该层从数据库中检索“外键”对象,然后将其添加到主对象。奇怪的是,这对第一个外键项目正常工作,但在第二个项目上失败并显示以下消息。

System.Data.EntityException: The underlying provider failed on Open. ---> System.Transactions.TransactionManagerCommunicationException: Network access for Distributed Transaction Manager (MSDTC) has been disabled. Please enable DTC for network access in the security configuration for MSDTC using the Component Services Administrative tool.

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 中的关系?

最佳答案

您需要数据库服务器、Sharepoint 服务器和运行代码的计算机上的 DTC 正在运行并启用网络访问(右键单击 Distributed Transaction Coordinator 节点上的 Properties在组件服务管理单元中,确保选中 Network DTC Access 并在每台计算机上选中 Allow Remote Clients 和入站和出站通信(您可以删除其中一些,但先让它工作)。

第一个调用是有效的,因为它只与本地 DTC 对话——一旦它试图用远程 DTC 登记 tx,它就会失败。

关于.net - 将 MSDTC 与 Entity Framework 结合使用时提供程序失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1472583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com