Код EF Первый DBC-контекст и транзакции

Я хотел бы знать, как наилучшим образом реализовать транзакции с помощью DBContext. В частности,

  • Выполняет ли DbContext.SaveChanges транзакцию внутри, если я меняю несколько объектов?
  • Если я хочу называть DbContext.SaveChanges несколько раз (один и тот же contxet/different contxets), как транзакция может быть достигнута?

Ответ 1

  • Да. SaveChanges использует транзакцию внутри страны.
  • Используйте TransactionScope для переноса нескольких вызовов на SaveChanges

Пример:

using(var scope = new TransactionScope(TransactionScopeOption.Required,
    new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted }))
{
    // Do something 
    context.SaveChanges();
    // Do something else
    context.SaveChanges();

    scope.Complete();
}