Подтвердить что ты не робот

Как регистрировать вызовы SQL с NHibernate на консоль 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 работать один?

4b9b3361

Ответ 1

Чтобы показать SQL в окне вывода Visual Studio, настройте 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>

ИЗМЕНИТЬ: Я не могу отформатировать это здесь правильно. См. эту ссылку для примера кода

Ответ 2

Для тех, кто предпочитает код, а не конфигурацию, следующий фрагмент создаст соответствующий NH-журнал с простым консольным приложением.

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

Ответ 3

show_sql выводится на Console.Out - это наиболее полезно при выполнении интеграционных тестов

Ответ 4

Есть что-то, называемое профилировщиком NHibernate, которое вы можете использовать.

http://nhprof.com/

он дорогой, но он работает, и у него 30-дневная пробная версия.