39

NHibernateの次の構成ファイルがあります。

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.connection_string">Server=.\SQLEXPRESS;Database=mydb;Integrated Security=True;</property>
    <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="connection.release_mode">auto</property>
    <property name="adonet.batch_size">500</property>

    <property name="show_sql">true</property>

  </session-factory>
</hibernate-configuration>

ただし、SQLはVisualStudioの出力ウィンドウに表示されません。log4netのインストールは必須ですか?それともshow_sql一人で働くべきですか?

4

5 に答える 5

59

Visual Studio の出力ウィンドウに SQL を表示するには、log4net 構成で TraceAppender を使用するように log4net を構成します。これ:

<appender name="DebugSQL" type="log4net.Appender.TraceAppender">
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>

次に、これ:

<logger name="NHibernate.SQL" additivity="false">
    <level value="DEBUG" />
    <appender-ref ref="DebugSQL" />
</logger>

編集:ここでこれを正しくフォーマットできないようです。コード例については、このリンクを参照してください

于 2009-09-01T05:20:09.710 に答える
18

構成よりもコードを好む人のために、次のスニペットは、単純なコンソール アペンダーで適切な NH ロガーを作成します。

var hierarchy = (Hierarchy) LogManager.GetRepository();
var logger = (Logger) hierarchy.GetLogger("NHibernate.SQL");
logger.AddAppender(new ConsoleAppender {Layout = new SimpleLayout()});
hierarchy.Configured = true;
于 2012-05-01T06:38:00.703 に答える
8

show_sql出力Console.Out- 統合テストを実行するときに最も役立ちます

于 2009-01-24T01:04:09.533 に答える
4

NHibernate 3.0 以降、おしゃべりな設定を使用できます

configuration.DataBaseIntegration(x =>
{
  x.LogSqlInConsole = true;
  x.LogFormattedSql = true;
});

http://fabiomaulo.blogspot.com.ar/2009/07/nhibernate-configuration-through.htmlで入手可能なその他の情報

于 2015-09-01T15:59:54.210 に答える
4

使用できる NHibernate プロファイラーと呼ばれるものがあります。

http://nhprof.com/

高価ですが、機能し、30日間の試用版があります.

于 2009-01-24T01:41:47.523 に答える