Entity Framework 6 предотвращает эскалацию транзакций при использовании нескольких контекстов, которые ссылаются на одну и ту же базу данных
Я натолкнулся на проблему, и я не могу найти ответ (или мои навыки в Google действительно мусор).
Нашим решением является веб-сайт ASP MVC4 C# и несколько библиотек классов. Мы используем MS SQL2008 и EntityFramework 6.
Допустим, у меня есть типы объектов Foo и Bar. Foo содержит объект Bar. После спасения Фу я должен спасти Бар. Методы сохранения Foo и Bar определены в разных библиотеках классов, каждая библиотека имеет свою собственную модель Entity, которая содержит таблицы из соответствующих схем одной и той же базы. Теперь проблема в том, что я использую транзакции, и вызов метода, который сохраняет Bar, приводит к тому, что на уровне транзакций возникает исключение "MSDTC отключен".
Есть ли способ избежать необходимости использовать MSDTC и при этом использовать разные модели сущностей, которые ссылаются на одну и ту же базу?
1 ответ
Итак, мы нашли решение. Прежде всего, строки должны быть точно одинаковыми (исключая метаданные). Если это не помогает, попробуйте сделать классы businesslogic, которые обрабатывают сохранение FOO и BAR в базе данных, используют один и тот же экземпляр TransactionHandler.