La base de données.BeginTransaction vs Transactions.TransactionScope
Quelle est la différence entre System.Transactions.TransactionScope
et EF6 de Database.BeginTransaction
?
Quelqu'un pourrait-il donner un petit exemple ou juste expliquer à utiliser au moment de avec une nette différence?
P. S: Dans mon projet, je suis en utilisant EF6. J'ai déjà lu la documentation mais il n'a pas beaucoup d'aide. Aussi leva les exemples, mais ils sont plutôt à l'aide de SqlConnection.BeginTransaction
et maintenant MME a introduit cette nouvelle Database.BeginTransaction
dans EF6.
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la réponse dans l'Entity Framework 6 documentation:
Avec l'introduction de EF6, Microsoft recommande d'utiliser les nouvelles méthodes de l'API:
Database.BeginTransaction()
etDatabase.UseTransaction()
. Bien queSystem.Transactions.TransactionScope
est toujours très bien pris en charge, il n'est plus nécessaire pour la plupart des utilisateurs de EF6.Tout
Database.BeginTransaction()
est utilisé uniquement pour la base de données des opérations liées à la transaction,System.Transactions.TransactionScope
, en plus de cela, il rend possible pour la 'plaine de code C#' également transactionnelle.Par conséquent, l'utilisation
Database.BeginTransaction()
où jamais ne faire que db opérations liées à une transaction dans EF6 utiliser autrementSystem.Transactions.TransactionScope
pour le mélange db opérations et le code C#, ensemble, dans une transaction.Pour ceux qui préfèrent encore le
TransactionScope
approche, il est recommandé à la société de la caisse de ses limites, en particulier dans les scénarios de nuages (cloud scénarios ne prennent pas en charge les transactions distribuées).De plus amples informations peuvent être trouvées ici