データベースへの選択クエリを起動するためにlinq to Nhibernateを使用しています。
私の質問は、Fluent NHibernate によって生成されたクエリをどのように知ることができるかということです。
データベースへの選択クエリを起動するためにlinq to Nhibernateを使用しています。
私の質問は、Fluent NHibernate によって生成されたクエリをどのように知ることができるかということです。
show_sqlFluent NHibernate を使用すると、次のように有効にすることができます。
Fluently.Configure()
.Database( MsSqlConfiguration.MsSql2005.ShowSql().ConnectionString(...) )...
NHibernate は、すべての sql ステートメントを に出力するようになりましたConsole.Out。
SQL を log4net に入れたい場合は、構成セクションでロガーを設定してください。
NHibernate パッケージを「INFO」に配置してノイズを減らし、NHibernate.SQL をすべてに配置して、すべての SQL ステートメントをログに記録できるようにしました。
<logger name="NHibernate">
<レベル値="情報" />
</ロガー>
<logger name="NHibernate.SQL">
<レベル値="ALL" />
</ロガー>
これも役立つかもしれませんhttp://nhprof.com/
nhibernate と流暢な nhibernate で SQL クエリを知るための 4 つのオプションを見つけました。
Intercepter - SQL を見るのは本当に良いことです。それを Visual Studio の出力やログ ファイルに入れることもできます。
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;
}
}
これを参照してください。必要なのはhibernate.show_sql.
このようなSQLプロファイラーも使用できます。
NHProfを必ず購入して使用してください。これは素晴らしい製品であり、実行されているクエリを表示するだけでなく、NHibernate のマッピングとクエリに関する潜在的なパフォーマンスの問題も表示します。
log4net をフックすることもできます。