2009-05-04 4 views
19

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?

+3

Courant NHibernate ** ** ne génère pas de requêtes. C'est NHibernate qui les génère. –

+0

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

Répondre

5

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> 

2

Voir this. Ce dont vous avez besoin est hibernate.show_sql.

+0

merci .. ............. –

+7

Comment configurez-vous cela avec Fluent NHibernate? –

35

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.

+1

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

+13

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

0

Vous pouvez utiliser profileurs sql comme this one aussi.

-1

Vous pouvez également utiliser log4net.

0

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.

2

J'ai trouvé 4 options pour connaître la requête SQL dans nhibernate et nhibernate fluide.

  1. Journal - Joey V. dit en réponse à cette même question. ShowSql - Kevin Berridge a déclaré en réponse à cette même question. NHProf - C'est un profileur génial. NHProf
  2. 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; 
        } 
    } 
    
Questions connexes