web-dev-qa-db-ja.com

EF Code First DBContextおよびトランザクション

DBContextを使用してトランザクションを実装するための最良の方法を教えてください。特に、

  1. 複数のエンティティを変更した場合、DbContext.SaveChangesはトランザクションの内部を実装しますか?
  2. DbContext.SaveChangesを複数回(同じcontxet /異なるcontxets)呼び出したい場合、どのようにトランザクションを達成できますか?
50
user396491
  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();
}
72
Ladislav Mrnka