web-dev-qa-db-fra.com

EF Code First DBContext et transactions

Je voudrais savoir quelle est la meilleure façon d'implémenter des transactions avec DBContext. En particulier,

  1. Est-ce que DbContext.SaveChanges implémenter la transaction interne si je change plusieurs entités?
  2. Si je veux appeler DbContext.SaveChanges plusieurs fois (même contxet/contxets différents), comment réaliser la transaction?
50
user396491
  1. Oui. SaveChanges utilise la transaction en interne.
  2. Utilisez TransactionScope pour encapsuler plusieurs appels vers SaveChanges

Exemple:

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