Можно ли использовать одну транзакцию для двух разных контекстов? - PullRequest
0 голосов
/ 15 сентября 2011

У меня есть DLL, которая имеет модель сущности, которая выполняет определенную работу.Мое основное приложение использует эту dll, но также имеет свою собственную модель сущностей для связи с БД.

Когда я сохраняю сущность в основном приложении, которая вызывает сохранение контекста сущностей dll, могу ли я обернуть их обоих водна транзакция?

Ответы [ 2 ]

2 голосов
/ 15 сентября 2011

Вы можете, используя TransactionScope.

Однако вы должны знать, что транзакция будет обрабатываться MSDTC, а не на уровне базы данных.1007 * Лучшим вариантом было бы использование шаблонов «Единица работы» и «Хранилище», чтобы каждая операция в цепочке событий (одна единица работы) использовала один и тот же контекст.В конце набора операций вы должны вызывать SaveChanges один раз, который будет использовать транзакцию БД.

0 голосов
/ 16 сентября 2011

Два контекста различны. У меня есть модель сущности с именем Location.edmx в DLL, которая знает, как сохранить местоположение. В основном приложении у меня есть и объектная модель Artifacts.edmx, которая знает, как хранить артефакт.

У артефакта есть местоположение. В коде сущности артефакта я бы написал:

public void Save()
{
context1.saveChanges();
location.Save()
}

в местоположении. Сохранить ()

это будет

public void Save()
{
context2.saveChanges();
}

Обратите внимание, что эти два метода находятся в разных библиотеках.

Как мне использовать транзакцию в моем примере?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...