2017-05-30 2 views
0

je le code suivant:Nhibernate annule-t-il la transaction lorsque la validation échoue?

public void UpdateEntities() 
{ 
    Session.BeginTransaction(); 

    // add some entities there..... 

    Session.Transaction.Commit(); 
} 

Si Commt() échoue, vous change rollback NHibernate?

+1

Veuillez lire le lien ci-dessus, assurez-vous que vous avez correctement éliminé la transaction, utilisez si possible l'instruction "using". –

Répondre

0

Si vous regardez le code suivant du AdoTransaction (ref), vous verrez comment NH réagit à une erreur lors de la tentative de validation. Bien que la transaction ne soit pas annulée explicitement, elle n'est certainement pas validée. Par conséquent, je pense que la réponse à votre question est oui, les modifications de la base de données en attente seront annulées.

Il est intéressant de noter que l'appel à Flush() n'est pas enveloppé dans try. Il convient donc de garder à l'esprit qu'une exception interceptée ici peut laisser le Session dans un état imprévisible. D'où le guidance sur la gestion des exceptions.

+0

Je vois .. Donc, il y a aussi un problème lorsque vous essayez de revenir en arrière manuellement dans le bloc catch si la validation a échoué. il échoue sur CheckNotZombied() vérifier. – Alexander