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?

È stato utile?

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.

  1. Registro - ha detto Joey V. in risposta a questa stessa domanda.
  2. ShowSql - ha detto Kevin Berridge in risposta a questa stessa domanda.
  3. NHProf - Questo è un profiler fantastico. NHProf
  4. 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top