web-dev-qa-db-fra.com

Dapper & TransactionScope?

Je viens de commencer à jouer avec Dapper. Jusqu'à présent, je l'adore. Dapper ne fonctionne-t-il pas avec TransactionScope? J'ai remarqué que même si je n'appelle jamais TransactionScope.Complete alors mes modifications sont toujours enregistrées dans la base de données. Si TransactionScope n'est pas pris en charge maintenant, est-il prévu à l'avenir de le prendre en charge? Sinon, vous devez utiliser la gestion traditionnelle des transactions (System.Transactions.Transaction)?

Mise à jour: je viens de parler à Sam sur Twitter. Ça devrait marcher. Je le mettrai à jour demain matin (au travail) avec les détails pour voir si quelqu'un peut comprendre pourquoi mes modifications étaient toujours validées dans la base de données même lorsque je n'ai jamais appelé complet.

46
coding4fun

C'était totalement de ma faute et je ne comprenais pas bien le champ des transactions. Une connexion n'est pas automatiquement inscrite dans transactionscope à moins que vous n'ouvriez la connexion dans transactionscope:

Inscription automatique

  using (var scope = new TransactionScope())
      {
        con.Open();                                
         //update/delete/insert commands here
      }

Inscription manuelle

    con.Open();
    using (var scope = new TransactionScope())
    {
       con.EnlistTransaction(Transaction.Current);  
       //update/delte/insert statements here
    }

Les détails peuvent être trouvés ici: Détails

88
coding4fun