Как читать SQL, сгенерированный NHibernate в Visual Studio - PullRequest
2 голосов
/ 23 ноября 2011

В соответствии с тем, что я знаю, есть 3 способа чтения сценария sql, сгенерированного NHibernate: 1. log4net 2. sql profiler 3. show_sql = true

Здесь я просто хочу поговорить о третьем длясказано, что я могу прочитать sql в окне вывода в Visual Studio.Но что бы я ни делал, я ничего не вижу?!

Поскольку какой-то парень сказал, что "show_sql = true" просто означает "Console.WriteLine ()", поэтому я отправляю вопрос здесь .

Я должен сказать, что не получаю то, что хочу, поэтому здесь я суммирую мои вопросы: в окне вывода в веб-приложении:

  1. Может ли результат "Консоль".WriteLine () "будет показано?
  2. Может ли" show_sql = true "сделать сценарий SQL показанным?

Если да, то как?

1 Ответ

2 голосов
/ 23 ноября 2011

Я не думаю, что Visual Studio покажет вывод консоли для библиотеки классов или проекта веб-сайта.Я настраиваю log4net для записи SQL-кода NHibernate в текстовый файл, а затем открываю файл в Visual Studio.При правильной конфигурации VS покажет обновления файла, щелкнув в окне.

В вашем файле Web.config (или app.config) определите раздел log4net, красиво отформатируйте SQL в NHibernate, создайтедобавьте текстовый файл и отправьте туда сообщения NHibernate:

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
      <property name="format_sql">true</property>
    </session-factory>
  </hibernate-configuration>

  <log4net>
    <appender name="NHibernateLogFile" type="log4net.Appender.FileAppender">
      <file value="../Logs/NHibernate.log" />
      <appendToFile value="false" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{HH:mm:ss.fff}%m%n==========%n" />
      </layout>
    </appender>

    <logger name="NHibernate" additivity="false">
      <level value="WARN" />
      <appender-ref ref="NHibernateLogFile" />
    </logger>
    <logger name="NHibernate.SQL" additivity="false">
      <level value="DEBUG" />
      <appender-ref ref="NHibernateLogFile" />
    </logger>
  </log4net>
</configuration>

Затем откройте NHibernate.Log в Visual Studio.Из-за описанного выше MinimalLock Visual Studio может читать файл одновременно с записью в него log4net.Когда вы нажмете в окне, VS перезагрузит файл.Обязательно отключите его при развертывании веб-сайта или приложения.

...