Эта проблема не является легко воспроизводимой в простом примере здесь, но было интересно, если у кого-нибудь есть опыт и советы, вот проблема:
- с использованием Entity Framework
- имеет много точек в приложении, где (1) данные записываются в некоторую сущность таблицу, например. Клиент, (2) данные записываются в историю таблицу
- оба этих действий используют Entity Framework, ОДНАКО они используют различные контексты
- эти действия должны быть оба в одной транзакции : то есть если одно не удается записать, другое не должно писать и т. Д.
- Я могу обернуть их с помощью TransactionScope,
вот так:
using (TransactionScope txScope = new TransactionScope()) {
...
}
но это дает мне:
Координатор распределенных транзакций Microsoft (MSDTC) отключен для
сетевые транзакции.
Администратор нашей базы данных сказал мне, что MSDTC по выбору отключен и не может быть установлен .
Поэтому я делаю изменения, пытаясь создать свое собственное EntityConnection с MetadataWorkspace с идеей, что каждый контекст будет использовать одно и то же EntityConnection . Тем не менее, это почти невозможно попытаться заставить его работать, например, в настоящее время я продолжаю получать вышеуказанную ошибку, хотя теоретически оба контекста используют EntityConnection. Трудно понять, где и почему Entity Framework требует MSDTC, например.
Кто-нибудь шел по этому пути раньше, есть опыт или примеры кода, чтобы поделиться?