Existe-t-il un moyen d’utiliser TransactionScope avec une connexion existante?

J’ai un code qui fonctionne comme l’utilisation conseillée de TransactionScope, mais qui a une connexion ambiante au lieu d’une transaction ambiante.

Existe-t-il un moyen d’utiliser un object TransactionScope avec une connexion existante ou existe-t-il une alternative dans le cadre .Net à cette fin?

En fait, il y a un moyen.

connection.EnlistTransaction(Transaction.Current) 

Cela fonctionne et ne favorise pas la transaction à dissortingbuer si ce n’est pas nécessaire (contrairement à ce que dit la documentation)

HTH

Pour inscrire une connexion dans un TransactionScope, vous devez spécifier 'Enlist=true' dans sa chaîne de connexion et ouvrir la connexion dans l’étendue de cet object TransactionScope.

Vous pouvez utiliser SqlConnection.BeginTransaction sur une connexion existante.

Mise à jour : Pouvez-vous utiliser BeginTransaction comme ceci:

 using (SqlConnection connection = new SqlConnection(connectionSsortingng)) { connection.Open(); SqlCommand command = connection.CreateCommand(); SqlTransaction transaction; // Start a local transaction. transaction = connection.BeginTransaction("SampleTransaction"); // Must assign both transaction object and connection // to Command object for a pending local transaction command.Connection = connection; command.Transaction = transaction; ... ... } 

Après plus de recherches, la réponse à ma question s’est avérée être:

Non, la connexion doit être ouverte après l’instanciation de l’object TransactionScope.