EF Code First DBContext и транзакции - PullRequest
50 голосов
/ 17 мая 2011

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

  1. Реализует ли DbContext.SaveChanges внутреннюю транзакцию, если я изменяю несколько объектов?
  2. Если я хочу позвонить DbContext.SaveChanges несколько раз (один и тот же / разные), как можно осуществить транзакцию?

1 Ответ

72 голосов
/ 17 мая 2011
  1. Да.SaveChanges использует транзакцию внутренне.
  2. Используйте 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...