在我們當前的項目中,我們使用ADO.NET實體框架作爲應用程序的數據層。有一些任務需要在事務中運行,因爲數據庫中有很多工作要做。我正在使用TransactionScope來圍繞這些任務。MSDTC問題與ADO.NET實體框架中的事務
using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.RequiresNew))
{
// Do something...
transactionScope.Complete();
}
的問題,一旦是我使用的是TransactionScope發生異常:
System.Data.EntityException:底層提供失敗的打開。 ---> System.Transactions.TransactionManagerCommunicationException:與底層事務管理器的通信失敗。 ---> System.Runtime.InteropServices.COMException(0x80004005):錯誤HRESULT E_FAIL已從調用返回到COM組件。
看來,這個錯誤必須與MSDTC(Microsoft分佈式事務處理協調器)做些什麼。當我更改MSDTC的安全配置時,會引發另一個異常:
System.Data.EntityException:底層提供程序在打開時失敗。 ---> System.Transactions.TransactionManagerCommunicationException:分佈式事務管理器(MSDTC)的網絡訪問已被禁用。請使用組件服務管理工具在MSDTC的安全配置中啓用DTC以進行網絡訪問。
但是,配置了MSDTC,TransactionScope將導致錯誤。 有人知道這裏出了什麼問題嗎?
我認爲它在這種情況下根本不使用交易,但我不確定。 – 2009-10-27 10:54:56
是的,這個選項表明它不應該參與交易。 – 2010-03-17 10:33:55
我得到了同樣的錯誤,但是這不是最好的答案。 – 2010-07-30 12:41:16