J'utilise NHibernate ICRITRIERIA pour exécuter une requête et j'aimerais pouvoir obtenir le SQL qui a été exécuté après la course de la déclaration. Donc, par exemple, j'ai quelque chose comme ça. Je sais que je peux le connecter et voir le SQL dans le journal, mais je veux l'obtenir immédiatement après avoir exécuté la déclaration afin que je puisse afficher la déclaration afin que je puisse afficher le SQL à l'utilisateur (même si cela n'a pas l'air bien). P> p>
3 Réponses :
Vous pouvez joindre un iterceptor code> à votre ISession NH code>, puis utilisez la méthode
onpreparestatement () code> pour piéger (même modifier ) le SQL. P>
J'aime cette méthode et IV implémentin de la logique d'interception et intercepter actuellement la méthode SaveOnUpdate, mais où est-ce que je vais de là pour attraper l'énoncé SQL? Invocation.Request ...?
Personnellement, j'utilise l'outil "Nibernate Profiler" pour cela. Cela vaut bien le prix car il fait également un bon travail analysant votre utilisation de NHibernate et remarquant des problèmes potentiels. P>
Je réalise que le profileur de NHibernate est bon à ce qu'il fait, mais si vous lisez la question à nouveau, je ne suis pas après un profileur ni de rechercher des problèmes potentiels.
Ahhh vous avez donc besoin de voir le SQL au moment de l'exécution? Je pensais que vous vouliez juste vouloir voir le SQL réel qui est ce que j'utilise NHProf pour la plupart du temps.
Vous pouvez utiliser la configuration log4net pour capturer le SQL utilisé.
Pour commencer, vous devez créer un appendend personnalisé tel que ceci: puis configurer log4net comme: p> La classe ci-dessus peut ensuite être interrogée au moment de l'exécution de manière à afficher la sortie SQL à l'écran P> EDIT: Pour une raison quelconque, le message n'est pas sorti correctement, l'exemple fondé sur le Web
http://nhforge.org/blogs/nhibernate/archive/2008/09/06/how-to-configure-log4net-for-use-with-nibernate.aspx P> P>
Stackoverflow.com/Questtions/10704462/...