50 votes

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. Fait DbContext.SaveChanges mettre en place une transaction interne si je change plusieurs entités ?
  2. Si je veux appeler DbContext.SaveChanges plusieurs fois (même contxet/différents contxets), comment la transaction peut-elle être réalisée ?

72voto

Ladislav Mrnka Points 218632
  1. Oui. SaveChanges utilise la transaction en interne.
  2. Utilisez TransactionScope pour regrouper plusieurs appels à 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();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X