質問

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つのオプションを見つけました。

  1. ログ-Joey V.はこの同じ質問に答えて言った。
  2. ShowSql-Kevin Berridgeはこの同じ質問に答えて言った。
  3. NHProf-これは素晴らしいプロファイラーです。 NHProf
  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にフックすることもできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top