Fluent NHibernateによって生成されたクエリを知る方法
-
03-07-2019 - |
質問
linh to Nhibernateを使用して、データベースへの選択クエリを起動しています。
私の質問は、Fluent NHibernateによって生成されたクエリをどのようにして知るのですか?
解決
SQLをlog4netに含める場合は、構成セクションでロガーを設定してください。
NHibernateパッケージを" INFO"に置きました。すべてのSQLステートメントをログに記録できるように、ノイズとNHibernate.SQLをすべて削減します。
<logger name="NHibernate"> <level value="INFO" /> </logger> <logger name="NHibernate.SQL"> <level value="ALL" /> </logger>
他のヒント
Fluent NHibernateを使用すると、次のように show_sql
を有効にできます。
Fluently.Configure()
.Database( MsSqlConfiguration.MsSql2005.ShowSql().ConnectionString(...) )...
NHibernateは、すべてのSQLステートメントを Console.Out
に出力します。
この便利な http://nhprof.com/
も役立つかもしれませんnhibernateおよびfluent nhibernateのSQLクエリを知るための4つのオプションを見つけました。
- ログ-Joey V.はこの同じ質問に答えて言った。
- ShowSql-Kevin Berridgeはこの同じ質問に答えて言った。
- NHProf-これは素晴らしいプロファイラーです。 NHProf
-
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にフックすることもできます。
所属していません StackOverflow