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?
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
.
See this. What you need is hibernate.show_sql
.
You can use sql profilers like this one too.
I have found 4 options to know sql query in nhibernate and fluent nhibernate.
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;
}
}
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>
You might also find this useful http://nhprof.com/