Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 25346|Répondre: 2

[Source] Utilisation de TransactionScope en C#

[Copié le lien]
Publié sur 10/04/2017 10:16:25 | | | |
TransactionScope

TransactionScope est une classe dans System.Transactions, qui est une classe qui vient avec le framework .NET. Si le TransactionScope est publié sans appeler la méthode Complete (TransactionScope implémente l’interface IDisposible, l’utilisation de blocs est recommandée), alors il considérera l’opération comme défaillante et annulera l’exécution.
TransactionScope est une API utile qui gère les transactions autour de (« autour » signifie que les bases de données supportant TransactionScope peuvent gérer automatiquement les transactions), et la plupart des bases de données grand public prennent en charge cette API, y compris MSSQL de Microsoft, bien sûr.
Si vous utilisez une base de données ou un système lié aux transactions qui ne prend pas en charge TransactionScope, vous pouvez toujours utiliser l’intercepteur, mais vous devrez modifier votre code pour utiliser une API adaptée qui prend en charge les transactions (par exemple, en utilisant l’API BeginTransaction pour obtenir l’implémentation IDbTransactions par le fournisseur de base de données).



Ce qui précède est une exception personnalisée que j’ai délibérément ajoutée pour voir si elle pouvait être annulée normalement, et l’image ci-dessous montre une exécution normale, sans exceptions.




Appeler la méthode Complete de TransactionScope indique que la transaction a été exécutée avec succès. Bien sûr, si la transaction est toujours exécutée, alors elle n’est pas nécessaire. La raison pour laquelle il y a des transactions est de résoudre le problème de défaillance lors de plusieurs opérations, et en cas de défaillance, elle sera annulée.
Parce que le . .NET : TransactionScope n’a pas d’appel de retour explicite, et l’équivalent le plus proche est d’utiliser la méthode Disposer. Si le TransactionScope est publié avant que la méthode Complete ne soit appelée, alors le TransactionScope effectue un rollback. Par conséquent, un appel Dispose doit être ajouté à la face intercepteur de la transaction pour effectuer le rollback.


Enfin, joignez le code !


En pièce jointe, le code source :
Touristes, si vous voulez voir le contenu caché de ce post, s’il vous plaîtRépondre






Précédent:L’instruction CREATE DATABASE n’est pas autorisée dans une transaction multi-états
Prochain:Faire supporter les champs dynamiques OrderBy de Linq
 Propriétaire| Publié sur 10/04/2017 10:20:30 |
La classe TransactionScope peut être utilisée imbriquée, et si vous souhaitez l’utiliser imbriquée, vous devez spécifier le paramètre TransactionScopeOption dans le bloc de transaction imbriqué. Le paramètre par défaut est Required.

Lorsque l’option TransactionScope de la classe imbriquée TransactionScope est requise, vous pouvez voir le résultat suivant : leurs transactions ont le même ID. De plus, il n’est vrai succès que lorsque les deux TransactionScopes sont terminés.

Si vous définissez TransactionScopeOption sur RequiresNew, les blocs de transactions imbriqués et les blocs externes sont indépendants et ne s’influencent pas mutuellement.

TransactionScopeOption est réglé sur Suppress pour annuler la transaction du bloc courant, ce qui est généralement rarement utilisé.
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com