Come sapere query generata da Fluente NHibernate
-
03-07-2019 - |
Domanda
Sto usando Linq per Nhibernate per lanciare alcune query selezionate nel database.
La mia domanda è, come faccio a sapere, la query generata da Fluent NHibernate?
Soluzione
Se si desidera che l'SQL si trovi in ??log4net, assicurarsi di impostare il logger nella sezione di configurazione.
Metto il pacchetto NHibernate su " INFO " per ridurre il rumore e NHibernate.SQL a tutti in modo da poter registrare tutte le istruzioni SQL.
<logger name="NHibernate"> <level value="INFO" /> </logger> <logger name="NHibernate.SQL"> <level value="ALL" /> </logger>
Altri suggerimenti
Con Fluente NHibernate, puoi attivare show_sql
in questo modo:
Fluently.Configure()
.Database( MsSqlConfiguration.MsSql2005.ShowSql().ConnectionString(...) )...
NHibernate ora stampa tutte le istruzioni sql su Console.Out
.
Potresti anche trovare questo utile http://nhprof.com/
Ho trovato 4 opzioni per conoscere la query sql in nhibernate e fluente nhibernate.
- Registro - ha detto Joey V. in risposta a questa stessa domanda.
- ShowSql - ha detto Kevin Berridge in risposta a questa stessa domanda.
- NHProf - Questo è un profiler fantastico. NHProf
-
Intercettore - È davvero bello vedere sql. possiamo inserirlo nel nostro Output di Visual Studio e persino nel file di 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; } }
Vedi questo . Ciò di cui hai bisogno è hibernate.show_sql
.
Puoi usare i profiler sql come anche questo .
Compra e usa sicuramente NHProf . Questo è un prodotto eccezionale e non solo ti mostra quali query vengono eseguite, ma ti mostra anche potenziali problemi di prestazioni con i tuoi mapping e query NHibernate.
Puoi anche agganciare log4net.