2010-02-22 7 views
1

Je suis confronté au prochain problème. J'ai un morceau de code qui va comme ceci:Problème TransactionScope avec les files d'attente de messages

DoSomething(){ 
    using (TransactionScope scope = new TransactionScope()) 
    { 
     InsertSomething(); 
     InsertSomethingElse(); 
     InsertYetAnotherThing(); 
     ProcessDataRelatedWithThePreviousInserts(); 
     scope.Complete() 
    } 
} 

En ProcessDataRelatedWithThePreviousInserts je vérifier une condition et si nécessaire, le reste du flux de travail est orienté vers un message de file d'attente dans un autre serveur. Dans l'autre serveur, je récupère le message, et continue le workflow (en fait, fais d'autres insertions qui sont liées à celles de la méthode DoSomething).

C'est en théorie, car je ne parviens à le faire que si je supprime le TransactionScope dans la méthode DoSomething. Y at-il un moyen d'accomplir ce que je veux faire ou je vais devoir changer la façon dont les transactions sont traitées?

+0

Avez-vous essayé comme je l'ai suggéré? Un succès? – Filburt

Répondre

0

Avez-vous déjà essayé

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew)) 
{ 
    // ... 
    using (TransactionScope innerscope = new TransactionScope(TransactionScopeOption.Supress) 
    { 
     ProcessDataRelatedWithThePreviousInserts(); 
    } 
    scope.Complete(); 
} 

explicitement la transaction supprimant externe pour votre appel à ProcessDataRelatedWithThePreviousInserts().

Questions connexes