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?

Était-ce utile?

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.

  1. Journal - a répondu Joey V. en réponse à cette même question.
  2. ShowSql - Kevin Berridge a répondu à la même question.
  3. NHProf - C’est un profileur génial. NHProf
  4. 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top