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
1
A
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
Après 'commit' est appelé, il est trop tard pour rollbacks. –
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! –
Était ma réponse pas ce que vous cherchiez? –