web-dev-qa-db-ja.com

NHibernateを使用してSQL呼び出しをVisual Studioのコンソールに記録する方法

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はVisual Studioの出力ウィンドウには表示されません。 log4net のインストールは必須ですか?またはshow_sql 一人で仕事する?

39

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>

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

58
LordHits

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

var hierarchy = (Hierarchy) LogManager.GetRepository();
var logger = (Logger) hierarchy.GetLogger("NHibernate.SQL");
logger.AddAppender(new ConsoleAppender {Layout = new SimpleLayout()});
hierarchy.Configured = true;
17
Nathan Baulch

show_sqlConsole.Outに出力します-統合テストの実行時に最も役立ちます

8
Matt Hinze

NHibernate 3.0以降では、loquacious設定を使用できます

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

その他の情報は http://fabiomaulo.blogspot.com.ar/2009/07/nhibernate-configuration-through.html で入手できます

4
Fabio Maulo

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

http://nhprof.com/

それは高価ですが、動作し、30日間の試用版があります。

4
Sara Chipps