2009-05-04 7 views
19

Ich benutze Linq zu Nhibernate, um einige ausgewählte Abfrage an die Datenbank auszulösen.Wie Abfrage kennen generiert von Fluent NHibernate

Meine Frage ist, woher weiß ich, die Abfrage von Fluent NHibernate erzeugt?

+3

Fluent NHibernate ** nicht ** Rückfragen generieren. Es ist NHibernate, die sie erzeugt. –

+0

Ich denke, diese Frage könnte Ihnen helfen: http://stackoverflow.com/questions/474659/how-to-log-sql-calls-with-nibernate-to-the-console-of-visual-studio – HerbalMart

Antwort

5

Wenn Sie möchten, dass sich die SQL in log4net befindet, stellen Sie sicher, dass Sie den Logger in Ihrem Konfigurationsabschnitt festgelegt haben.

Ich legte das NHibernate-Paket bei "INFO", um das Rauschen und die NHibernate.SQL auf alle zu reduzieren, damit ich alle SQL-Anweisungen protokollieren kann.

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


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

2

Siehe this. Was Sie brauchen, ist hibernate.show_sql.

+0

thanks .. ............. –

+7

Wie konfigurieren Sie das mit Fluent NHibernate? –

35

Mit Fluent NHibernate können Sie auf show_sql wie folgt drehen:

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

NHibernate jetzt jeder SQL-Anweisung zu Console.Out gedruckt wird.

+1

Hallo Kevin, Danke für das Posten! Ich frage mich, ob Sie Log4Net auch so angeschlossen haben, dass es das generierte SQL an eine Datei sendet? – 5x1llz

+13

Das ist so frustrierend. Irgendeine Idee, warum das jemals nicht funktionieren würde? Ich schaue durch meine Konsole und es ist einfach nicht da. – Milimetric

0

Sie SQL Profiler wie this one verwenden.

-1

Sie können auch log4net einbinden.

0

Auf jeden Fall kaufen und verwenden NHProf. Dies ist ein tolles Produkt und zeigt Ihnen nicht nur, welche Abfragen ausgeführt werden, sondern zeigt Ihnen auch mögliche Leistungsprobleme mit Ihren NHibernate-Zuordnungen und -Abfragen.

2

Ich habe 4 Optionen gefunden, SQL-Abfrage in Nhibernate und fließend Nhibernate zu wissen.

  1. Log - Joey V. sagte in der Antwort auf diese gleiche Frage.
  2. ShowSql - Kevin Berridge sagte auf die gleiche Frage.
  3. NHProf - Dies ist ein fantastischer Profiler. NHProf
  4. Intercepter - Es ist wirklich gut zu sehen, sql. Wir können es in unsere Ausgabe von Visual Studio und sogar in die Protokolldatei einfügen.

    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; 
        } 
    }