J'ai lu à propos de TransactionScope et j'avais une question sur son interopérabilité avec les transactions ADO.Net. À l'heure actuelle, nous avons des méthodes d'accès aux données qui appellent chacune un proc stocké et commencent et engagent leurs propres transactions individuelles. trucs straighforward, passe-partout, les méthodes ressemblent à ceci:Utilisation de transactions ADO.Net dans un TransactionScope?
sqlCommand = //create SQLCommand with Stored proc
SqlTransaction myTransaction = myConnection.BeginTransaction();
sqlCommand.Transaction = sqlTransaction;
sqlCommand.Execute();
sqlTransaction.Commit();
J'ai simplifié les choses un peu, mais vous voyez l'idée.
Je dois maintenant appeler consécutivement deux de ces méthodes de classe et les valider ou les annuler en tant qu'équipe à partir de ma couche de gestion. Je ne peux pas modifier les méthodes de données, donc je pensais mettre les deux appels dans un bloc TransactionScope.
Si je fais cela, quel type de paramètres dois-je utiliser lors de la création de TransactionScope? J'ai déjà essayé ceci en utilisant l'option TransactionScopeOption.RequiresNew et les choses semblent fonctionner, mais c'est juste moi qui expérimente et je ne suis pas sûr si c'est la voie à suivre. (Je noterai ici qu'il s'agit exclusivement de transactions SQL exécutées sur le même serveur SQL.)
Je vois que TransactionScope a des options de constructeur pour gérer les transactions COM +. Parce que j'utilise les transactions ADO.Net, est-ce pertinent ici? Merci pour le conseil.
Le lien msdn est mort. Une chose à savoir est que si la connexion a été créée en dehors de la portée, elle doit être enrôlée manuellement dans la transaction ambiante en appelant 'connection.EnlistTransaction (Transaction.Current)'. – kristianp
Permaliens! J'ai lié à la documentation MSDN à la place et posté l'extrait. – micahtan