Pregunta

Estoy usando linq para Nhibernate para lanzar alguna consulta de selección a la base de datos.

Mi pregunta es, ¿cómo puedo saber, la consulta generada por Fluent NHibernate?

¿Fue útil?

Solución

Si desea que el SQL esté en log4net, asegúrese de configurar el registrador en la sección de configuración.

Puse el paquete NHibernate en " INFO " para reducir el ruido y el NHibernate.SQL a todos para que pueda registrar todas las declaraciones SQL.

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


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

Otros consejos

Con Fluent NHibernate, puedes activar show_sql de esta forma:

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

NHibernate ahora imprimirá cada declaración de sql en Console.Out .

También puede encontrar esto útil http://nhprof.com/

He encontrado 4 opciones para conocer consultas SQL en nhibernate y nhibernate fluido.

  1. Registro: dijo Joey V. en respuesta a esta misma pregunta.
  2. ShowSql: dijo Kevin Berridge en respuesta a esta misma pregunta.
  3. NHProf: este es un perfilador impresionante. NHProf
  4. Interceptor: es realmente bueno ver sql. Podemos ponerlo en nuestra Salida de Visual Studio e incluso en el archivo de registro.

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

Consulte esto . Lo que necesitas es hibernate.show_sql .

Puede usar perfiladores de sql como este también.

Definitivamente compre y use NHProf . Este es un producto increíble y no solo le muestra qué consultas se están ejecutando, sino que también le muestra los posibles problemas de rendimiento con sus asignaciones y consultas de NHibernate.

También puedes enganchar en log4net.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top