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