Выполнение транзакций с использованием кода 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, используя, например, метод расширения.