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?

Foi útil?

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.

  1. Log - Joey V. disse em resposta a esta mesma pergunta .
  2. ShowSql - Kevin Berridge disse em resposta a esta mesma pergunta .
  3. NHProf - Este é um profiler incrível. NHProf
  4. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top