2009-08-07 4 views
3

En utilisant le code ci-dessous, le comportement attendu est que la base de données ne reflétera pas la mise à jour puisque ts.Complete() n'est jamais appelé mais les mises à jour semblent passer. Mais si je laisse de côté le SharedDbConnectionScope alors le comportement attendu est vu. Y a-t-il un problème avec SharedDbConnectionScope? Btw J'utilise Subsonic 2.2Subsonic: Utiliser SharedDbConnectionScope avec TransactionScope semble être cassé

using (SharedDbConnectionScope sharedConnectionScope = new SharedDbConnectionScope())   
{ 
    using (TransactionScope ts = new TransactionScope()) 
    {     
     // update here 
    } 
} 

Répondre

3

Trouvé le problème. Les documents sur Subsonic semble être faux. Si j'emballe TransactionScope sur SharedDbConnectionScope alors cela fonctionne très bien. La bonne façon devrait être:

using (TransactionScope ts = new TransactionScope()) 
{ 
    using (SharedDbConnectionScope sharedConnectionScope = new SharedDbConnectionScope())   
    { 
      // update here 
    } 
} 

Edit: Comme mentionné par tempête de feu, SharedDbConnectionScope ne semble pas fonctionner dans Subsonic 2.2. La seule solution semble donc être d'installer MsDts et de ne pas utiliser SharedDbConnectionScope.

0

Je ne pense pas que SharedDbConnectionScope fonctionne du tout dans Subsonic 2.2. L'idée dans la mesure où je peux voir avec l'objet est que lorsque vous l'utilisez, vous n'avez pas besoin d'avoir MsDts installé sur le serveur. Je ne pouvais pas faire fonctionner ça du tout! Lorsque vous installez MsDts, vous n'avez plus besoin de SharedDbConnectionScope, c'est pourquoi votre code fonctionne lorsqu'il est créé après TransactionScope.

+0

Je vois. Cela expliquerait pourquoi le changement le ferait fonctionner – owcs

Questions connexes