Sto utilizzando linq su Nhibere per attivare alcune query di selezione sul database.Come conoscere la query generata da Fluent NHibernate
La mia domanda è, come faccio a sapere, la query generata da Fluent NHibernate?
Sto utilizzando linq su Nhibere per attivare alcune query di selezione sul database.Come conoscere la query generata da Fluent NHibernate
La mia domanda è, come faccio a sapere, la query generata da Fluent NHibernate?
Se si desidera che SQL sia in log4net, assicurarsi di impostare il programma di registrazione nella sezione di configurazione.
Ho inserito il pacchetto NHibernate in "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>
Vedere this. Quello che ti serve è hibernate.show_sql
.
grazie .. ............. –
Come si configura questo con Fluent NHibernate? –
Con Fluent NHibernate, è possibile attivare show_sql
come questo:
Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005.ShowSql().ConnectionString(...))...
NHibernate stamperà ogni istruzione SQL per Console.Out
.
Ciao Kevin, Grazie per aver postato questo! Mi chiedo se hai anche collegato Log4Net in modo da inviare l'SQL generato a un file? – 5x1llz
Questo è così frustrante. Qualche idea sul perché questo non funzionerebbe mai? Sto guardando attraverso la mia console e non è lì. – Milimetric
Si potrebbe anche trovare questo utile http://nhprof.com/
È possibile utilizzare i profiler di sql come this one troppo.
È inoltre possibile collegarsi a log4net.
Comprare e utilizzare definitivamente NHProf. Questo è un prodotto fantastico e non mostra solo quali query vengono eseguite, ma mostra anche potenziali problemi di prestazioni con i mapping e le query di NHibernate.
Ho trovato 4 opzioni per conoscere sql query in nhibernate e fluente nibernato.
Intercettatore: è davvero bello vedere sql. possiamo metterlo nel nostro Output di Visual Studio e anche nel file di 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;
}
}
Fluent NHibernate ** non ** genera qualsiasi domanda. È NHibernate che li genera. –
Penso che questa domanda possa aiutarti: http://stackoverflow.com/questions/474659/how-to-log-sql-calls-with-nhibernate-to-the-console-of-visual-studio – HerbalMart