2009-09-24 86 views
2

我有一個應用程序保存到數據庫(使用實體框架),並保存文檔到Sharepoint在一次保存。我正在嘗試在TransactionScope中使用MSDTC。提供商失敗使用MSDTC與實體框架

我的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中的關係嗎?

回答

6

您需要DB服務器,Sharepoint服務器和運行代碼的機器上的DTC運行並啓用網絡訪問(右鍵單擊「組件服務」管理單元中的Distributed Transaction Coordinator節點上的「屬性」確保Network DTC Access檢查和Allow Remote Clients和入站和出站通信在每個機器的檢查(你可以刪除其中的一些,但得到它的工作第一)。

第一通電話工程,因爲它只是說話本地DTC-只要它試圖用遠程DTC登記tx,它就會失敗

3

這與Matt的實際情況相同但圖形上

enter image description here

相關問題