How to know query generated by Fluent NHibernate

大兔子大兔子 提交于 2019-12-18 12:14:09

问题


I am using linq to Nhibernate to fire some select query to data base.

My question is, how do I know, the query generated by Fluent NHibernate?


回答1:


If you want the SQL to be in log4net, make sure you set the logger in your configuration section.

I put the NHibernate package at "INFO" to reduce the noise and the NHibernate.SQL to all so I can log all SQL statements.

  
 <logger name="NHibernate">
   <level value="INFO" />
 </logger>


  <logger name="NHibernate.SQL">
    <level value="ALL" />
  </logger>




回答2:


With Fluent NHibernate, you can turn on show_sql like this:

Fluently.Configure()
    .Database( MsSqlConfiguration.MsSql2005.ShowSql().ConnectionString(...) )...

NHibernate will now print every sql statement to Console.Out.




回答3:


You might also find this useful http://nhprof.com/




回答4:


I have found 4 options to know sql query in nhibernate and fluent nhibernate.

  1. Log - Joey V. said in answer of this same question.
  2. ShowSql - Kevin Berridge said in answer of this same question.
  3. NHProf - This is a awesome profiler. NHProf
  4. Intercepter - It is really good to see sql. we can put it in our Output of Visual Studio and even in log file.

    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;
        }
     }
    



回答5:


See this. What you need is hibernate.show_sql.




回答6:


You can use sql profilers like this one too.




回答7:


Definitely buy and use NHProf. This is an awesome product and not only shows you what queries are being run, but also shows you any potential performance problems with your NHibernate mappings and queries.




回答8:


You can also hook in log4net.



来源:https://stackoverflow.com/questions/819040/how-to-know-query-generated-by-fluent-nhibernate

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!