2010-06-07 2 views
1

Lorsque Commit est appelé (pour l'implémentation de IEnlistmentNotification), puis-je simplement lancer une exception pour indiquer que je veux annuler la transaction?Commutation en deux phases avec l'interface IEnlistmentNotification

+2

Après 'commit' est appelé, il est trop tard pour rollbacks. –

+0

En fait, non - jusqu'à ce que Enlistment.Done() soit appelé dans l'instance d'implémentation, il est toujours possible de revenir en arrière! –

+0

Était ma réponse pas ce que vous cherchiez? –

Répondre

0

Vous devriez plutôt appeler Transaction.Rollback(Exception ex):

public void Commit(Enlistment enlistment) 
    { 
     Transaction currentTx = Transaction.Current; 
     if (currentTx != null) 
     { 
     currentTx.RollBack(new Exception("I give up!"); 
     } 
    } 
+0

Basé sur mon code de test, il semble que Transaction.Current est toujours null lorsque la méthode Commit() est appelée. Des idées? – matori82

Questions connexes