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?
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?
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>
Siehe this. Was Sie brauchen, ist hibernate.show_sql
.
thanks .. ............. –
Wie konfigurieren Sie das mit Fluent NHibernate? –
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.
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
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
Sie könnten auch dies nützlich finden http://nhprof.com/
Sie SQL Profiler wie this one verwenden.
Sie können auch log4net einbinden.
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.
Ich habe 4 Optionen gefunden, SQL-Abfrage in Nhibernate und fließend Nhibernate zu wissen.
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;
}
}
Fluent NHibernate ** nicht ** Rückfragen generieren. Es ist NHibernate, die sie erzeugt. –
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