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.TransactionScopesoit 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.TransactionScopeen 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.TransactionScopepour 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' TransactionScopeapproche, 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