2009-05-04 9 views
19

Estoy utilizando linq a Nhibernate para activar alguna consulta de selección a la base de datos.Cómo saber la consulta generada por Fluidez NHibernate

Mi pregunta es, ¿cómo sé que la consulta generada por Fluidez NHibernate?

+3

Fluido NHibernate ** ** no genera ningún tipo de consultas. Es NHibernate quien los genera. –

+0

Creo que esta pregunta podría ayudarlo: http://stackoverflow.com/questions/474659/how-to-log-sql-calls-with-nhibernate-to-the-console-of-visual-studio – HerbalMart

Respuesta

5

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 para todos, así puedo registrar todas las sentencias de SQL.

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


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

2

Ver this. Lo que necesita es hibernate.show_sql.

+0

gracias .. ............. –

+7

¿Cómo se configura eso con Fluent NHibernate? –

35

Con Fluido NHibernate, puede activar el show_sql así:

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

NHibernate ahora se imprimirá cada instrucción SQL para Console.Out.

+1

Hola Kevin, ¡Gracias por publicar esto! Me pregunto si también ha conectado Log4Net para que envíe el SQL generado a un archivo. – 5x1llz

+13

Esto es muy frustrante. ¿Alguna idea de por qué esto nunca funcionaría? Estoy mirando a través de mi consola y simplemente no está allí. – Milimetric

0

Puede utilizar SQL como perfiladores this one también.

-1

También puede enganchar en log4net.

0

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 posibles problemas de rendimiento con sus asignaciones y consultas de NHibernate.

2

He encontrado 4 opciones para saber sql query en nhibernate y fluente nhibernate.

  1. Log - Joey V. dijo en respuesta a esta misma pregunta.
  2. ShowSql - Kevin Berridge dijo en respuesta a esta misma pregunta.
  3. NHProf - Este es un generador de perfiles impresionante. NHProf
  4. Intercepter - Es realmente bueno ver sql. podemos ponerlo en nuestro Output of 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; 
        } 
    } 
    
Cuestiones relacionadas