2009-12-04 97 views
1

我有一個問題,我知道是本地的,與事務範圍有關的東西,可能是MSDTC(我不太瞭解它)。爲什麼TransactionScope使用實體框架導致問題?

其他項目的開發商(相同的代碼,一切COMMITED)執行整體解決方案,但是當我試圖從數據庫中(不總是)得到一些數據,我有以下錯誤:

The underlying provider failed on EnlistTransaction. 


    at System.Data.EntityClient.EntityConnection.EnlistTransaction(Transaction transaction) 
    at System.Data.Objects.ObjectContext.EnsureConnection() 
    at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) 
    at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() 
    at System.Linq.Enumerable.First[TSource](IEnumerable`1 source) 
    at System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__0[TResult](IEnumerable`1 sequence) 
    at System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot) 
    at System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[S](Expression expression) 
    at System.Linq.Queryable.First[TSource](IQueryable`1 source, Expression`1 predicate) 

如果我評論使用的事務範圍,完整()和一切,它按預期工作。

你有過這個問題嗎?

編輯:

拋出這個錯誤是很簡單的東西,比如查詢:

var entity = Entities.EntityX.First(p => p.ID == id); 

編輯,解決了:

服務器的LMHOSTS已經過時。

+0

你能寫更多關於什麼導致問題的東西嗎? – kubal5003 2012-01-11 13:38:51

+0

@ kubal5003抱歉,但有很長一段時間,我不記得了。 =/ – 2012-01-12 02:42:59

回答

2

防火牆規則阻止DTC端口,也許?或者一個不完整的防火牆規則允許一些DTC端口,但不是其他的?我從來沒有通過防火牆獲得分佈式事務。即使在遵循directions之後。

+0

我試圖運行DTCPing.exe,但它在advpack.dll中引發錯誤:S只有一個結果在谷歌中沒有提到有關錯誤=/ – 2009-12-04 19:45:59

+0

問題:服務器的lmhosts已過時。 – 2009-12-04 20:00:45