Como saber consulta gerada pela Fluent NHibernate
-
03-07-2019 - |
Pergunta
Estou usando o Linq para Nhibernate para disparar alguma consulta selecione a base de dados.
A minha pergunta é, como eu sei, a consulta gerada pela Fluent NHibernate?
Solução
Se você deseja que o SQL para a log4net, certifique-se de definir o logger em sua seção de configuração.
Eu coloquei o pacote NHibernate em "INFO" para reduzir o ruído ea NHibernate.SQL a todos para que eu possa registrar todas as instruções SQL.
<logger name="NHibernate"> <level value="INFO" /> </logger> <logger name="NHibernate.SQL"> <level value="ALL" /> </logger>
Outras dicas
Com Fluent NHibernate, você pode ligar show_sql
assim:
Fluently.Configure()
.Database( MsSqlConfiguration.MsSql2005.ShowSql().ConnectionString(...) )...
NHibernate irá agora imprimir cada instrução SQL para Console.Out
.
Você também pode encontrar este http://nhprof.com/
Eu encontrei 4 opções de saber sql consulta no nhibernate e fluente nhibernate.
- Log - Joey V. disse em resposta a esta mesma pergunta ??li>.
- ShowSql - Kevin Berridge disse em resposta a esta mesma pergunta ??li>.
- NHProf - Este é um profiler incrível. NHProf
-
Intercepter - É muito bom ver sql. podemos colocá-lo em nossa saída do Visual Studio e até mesmo no arquivo de log.
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; } }
este . O que você precisa é hibernate.show_sql
.
Você pode usar perfis SQL como esta também.
Definitivamente comprar e usar NHProf . Este é um produto incrível e não apenas mostra o que consultas estão sendo executados, mas também mostra todos os potenciais problemas de desempenho com seus mapeamentos e consultas NHibernate.
Você também pode ligar no log4net.