J'ai trouvé la réponse dans la documentation d'Entity Framework 6:
Avec l'introduction d'EF6, Microsoft recommande d'utiliser de nouvelles méthodes API: Database.BeginTransaction()
et Database.UseTransaction()
. Bien qu'il System.Transactions.TransactionScope
soit toujours très bien pris en charge, il n'est plus nécessaire pour la plupart des utilisateurs d'EF6.
Alors que Database.BeginTransaction()
n'est utilisé que pour les transactions d'opérations liées à la base de données,, System.Transactions.TransactionScope
en plus de cela, permet au «code C # simple» d'être également transactionnel.
Par conséquent, utilisez Database.BeginTransaction()
partout où vous ne faites que des opérations liées à la base de données dans une transaction dans EF6, sinon utilisez-le System.Transactions.TransactionScope
pour mélanger les opérations de base de données et le code C # dans une transaction.
Pour ceux qui préfèrent toujours l' TransactionScope
approche, il est recommandé de vérifier ses limites, en particulier dans les scénarios cloud (les scénarios cloud ne prennent pas en charge les transactions distribuées).
Vous trouverez plus d'informations ici