我有一個服務級別的方法,這使得數據庫的變化很少,我希望他們使用事務控制。這些方法可以做到: - LINQ SubmitChanges()功能 - 調用存儲過程TransactionScope,LINQ和奇怪的事務管理器問題(HRESULT:0x8004D024)
組件用戶可以將這些基本操作的集合組合成更大的東西。
我看到有一個很好的類TransactinScope並試圖使用它:
using (TransactionScope transaction = new TransactionScope())
{
content = repository.CreateBaseContent(content);
result = repository.CreateTreeRelation(content, parent.Id, name);
transaction.Complete();
}
public baseContent CreateBaseContent(baseContent content)
{
EntityContext.baseContents.InsertOnSubmit(content);
EntityContext.SubmitChanges();
return content;
}
public CreateTreeRelation (params)
{
// do StoredProcedure call here via LINQ
}
我的假設是,在外層將有可能增加交易範圍的另一個層次。相反,我有以下錯誤:
事務管理器已禁用其對遠程/網絡事務的支持。 (異常來自HRESULT:0x8004D024)
我使用相同的(Vista旗艦版)機器爲MS SQL 2005和微軟開發服務器。從單元測試一切正常。當TransactionScope評論時相同。
我試圖與安全方面發揮的DTC(http://support.microsoft.com/kb/899191),當我設置爲acccept所有入站和出站的交易,我有以下錯誤信息:
錯誤HRESULT E_FAIL已從調用返回至COM零件。
調試過程中,我發現在的SubmitChanges,LINQ的實體上下文產權交易IS NULL(!),並System.Transactions.Transaction.Current有打開的事務