J'utilise linq pour Nhibernate pour déclencher une requête de sélection vers une base de données.Comment connaître la requête générée par Fluent NHibernate
Ma question est, comment puis-je savoir, la requête générée par Fluent NHibernate?
J'utilise linq pour Nhibernate pour déclencher une requête de sélection vers une base de données.Comment connaître la requête générée par Fluent NHibernate
Ma question est, comment puis-je savoir, la requête générée par Fluent NHibernate?
Si vous voulez que le SQL soit dans log4net, assurez-vous de définir l'enregistreur dans votre section de configuration.
J'ai mis le paquet NHibernate à "INFO" pour réduire le bruit et le NHibernate.SQL à tous pour que je puisse enregistrer toutes les instructions SQL.
<logger name="NHibernate"> <level value="INFO" /> </logger> <logger name="NHibernate.SQL"> <level value="ALL" /> </logger>
Voir this. Ce dont vous avez besoin est hibernate.show_sql
.
merci .. ............. –
Comment configurez-vous cela avec Fluent NHibernate? –
Fluent NHibernate, vous pouvez activer show_sql
comme ceci:
Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005.ShowSql().ConnectionString(...))...
NHibernate va maintenant imprimer chaque instruction SQL à Console.Out
.
Bonjour Kevin, Merci de poster ce message! Je me demande si vous avez également connecté Log4Net afin qu'il envoie le SQL généré dans un fichier? – 5x1llz
C'est tellement frustrant. Une idée de pourquoi cela ne marcherait jamais? Je regarde dans ma console et ce n'est pas là. – Milimetric
Vous pouvez également trouver ce utile http://nhprof.com/
Vous pouvez utiliser profileurs sql comme this one aussi.
Vous pouvez également utiliser log4net.
Bien acheter et utiliser NHProf. C'est un produit génial qui vous montre non seulement quelles requêtes sont lancées, mais qui vous montre également des problèmes de performances potentiels avec vos mappages et requêtes NHibernate.
J'ai trouvé 4 options pour connaître la requête SQL dans nhibernate et nhibernate fluide.
Intercepter - Il est vraiment bon de voir sql. nous pouvons le mettre dans notre sortie de Visual Studio et même dans le 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;
}
}
Courant NHibernate ** ** ne génère pas de requêtes. C'est NHibernate qui les génère. –
Je pense que cette question pourrait vous aider: http://stackoverflow.com/questions/474659/how-to-log-sql-calls-with-nhibernate-to-the-console-of-visual-studio – HerbalMart