Como saber consulta generada por Fluent NHibernate
-
03-07-2019 - |
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?
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.
- Registro: dijo Joey V. en respuesta a esta misma pregunta.
- ShowSql: dijo Kevin Berridge en respuesta a esta misma pregunta.
- NHProf: este es un perfilador impresionante. NHProf
-
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.