Comment connaître la requête générée par Fluent NHibernate
-
03-07-2019 - |
Question
J'utilise linq pour Nhibernate pour lancer une requête de sélection vers la base de données.
Ma question est, comment puis-je savoir, la requête générée par Fluent NHibernate?
La solution
Si vous souhaitez que le code SQL soit dans log4net, assurez-vous de définir le consignateur dans votre section de configuration.
Je mets le package NHibernate à "INFO". pour réduire le bruit et le NHibernate.SQL à tous afin que je puisse enregistrer toutes les instructions SQL.
<logger name="NHibernate"> <level value="INFO" /> </logger> <logger name="NHibernate.SQL"> <level value="ALL" /> </logger>
Autres conseils
Avec Fluent NHibernate, vous pouvez activer show_sql
comme suit:
Fluently.Configure()
.Database( MsSqlConfiguration.MsSql2005.ShowSql().ConnectionString(...) )...
NHibernate va maintenant imprimer chaque instruction SQL sur Console.Out
.
Vous pouvez également trouver cela utile http://nhprof.com/
J'ai trouvé 4 options pour connaître la requête SQL dans nhibernate et nhibernate couramment.
- Journal - a répondu Joey V. en réponse à cette même question.
- ShowSql - Kevin Berridge a répondu à la même question.
- NHProf - C’est un profileur génial. NHProf
-
Intercepter - C’est vraiment bien de voir SQL. nous pouvons le mettre dans notre sortie de Visual Studio et même dans un fichier journal.
ISessionFactory sf = Fluently.Configure() .Database(MySQLConfiguration.Standard.ConnectionString(ConnectionString).ShowSql()) .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Stock>()) .ExposeConfiguration(c => c.SetInterceptor(new ABCInterceptor())) .BuildSessionFactory(); public class ABCInterceptor : EmptyInterceptor { public override NHibernate.SqlCommand.SqlString OnPrepareStatement(NHibernate.SqlCommand.SqlString sql) { Trace.WriteLine(sql.ToString()); return sql; } }
Voir ceci . Ce dont vous avez besoin, c'est hibernate.show_sql
.
Vous pouvez utiliser les profileurs SQL comme celui-ci également.
Achetez et utilisez certainement NHProf . C’est un produit génial qui vous indique non seulement les requêtes exécutées, mais également tout problème de performances potentiel lié à vos mappages et requêtes NHibernate.
Vous pouvez également vous connecter à log4net.