Выполнение транзакций с использованием кода Entity Framework First
Существует ответ здесь, чтобы объяснить, как делать транзакции с Entity Framework
Однако решение сначала не работает с кодом.
Я экспериментировал, и мои тесты показывают, что следующее работает
using (var scope = new TransactionScope())
{
DBContext1.SaveChanges()
If (ForceFailure) return 0 // used in testing
DBContext2.SaveChanges()
scope.Complete();
}
Однако я нервничаю, потому что я больше не передаю параметры SaveChanges или не вызываю AcceptAllChanges
Как установить, могу ли я доверять моему решению?
Ответы
Ответ 1
SaveChanges(Boolean)
является частью ObjectContext
, а не DbContext
. Обратите внимание, что метод SaveChanges(Boolean)
в ObjectContext
устарел в пользу SaveChanges(SaveOptions)
.
Если вы все еще хотите использовать DbContext
, вы можете перегрузить свой собственный метод SaveChanges
, чтобы использовать IObjectContextAdapter.ObjectContext, используя, например, метод расширения.