52

でトランザクションを実装する最善の方法を教えてDBContextください。特に、

  1. DbContext.SaveChanges複数のエンティティを変更した場合、トランザクションは内部的に実装されますか?
  2. 複数回呼び出したい場合DbContext.SaveChanges(同じ contxet/異なる contxets)、どのようにトランザクションを達成できますか?
4

1 に答える 1

74
  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();
}
于 2011-05-17T09:15:32.787 に答える