Почему TransactionScope вызывает проблемы при использовании Entity Framework? - PullRequest
1 голос
/ 04 декабря 2009

У меня есть проблема, которую я знаю, что-то локальное, связанное с областью транзакции, возможно, MSDTC (я не очень много знаю об этом).

Другой разработчик проекта (та же база кода, все зафиксировано) выполняет все решение, но когда я пытаюсь получить некоторые данные из базы данных (не всегда), у меня появляется следующая ошибка:

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)

Если я прокомментирую область действия using, complete () и все остальное, все будет работать как положено.

У вас когда-нибудь была такая проблема?

EDIT:

Запрос, выдающий эту ошибку, выглядит очень просто, например:

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

РЕДАКТИРОВАТЬ, РЕШЕНО:

Серверы lmhosts устарели.

1 Ответ

2 голосов
/ 04 декабря 2009

Правила брандмауэра, блокирующие порты DTC, может быть? Или неполное правило брандмауэра, разрешающее некоторые порты DTC, но не другие? Я никогда не заставлял распределенные транзакции работать хорошо через брандмауэр. Даже после следования указаниям .

...