Как настроить Быстрый NHibernate для вывода запросов, чтобы Проследить или Отладить вместо Консоли?

Как настроить Быстрый NHibernate для вывода запросов, чтобы Проследить или Отладить вместо Консоли? Я использую MsSqlConfiguration.MsSql2008.ShowSql() но это не имеет никаких параметров, и я ничего не могу найти на Google.

49
задан André Pena 25 January 2010 в 08:26
поделиться

2 ответа

Вы, вероятно, хотите использовать Log4net, не отображающую. Вот некоторая конфигурация для отправки запросов для отладки:

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

  <log4net debug="false">
    <appender name="WindowsDebugOutput" type="log4net.Appender.DebugAppender,
         log4net">
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern"
              value="%d{ABSOLUTE} %-5p %c{1}:%L - %m%n" />
      </layout>
    </appender>

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

, а затем вызовите это из вашего кода перед открытием сеанса NHIBERNATE:

log4net.Config.XmlConfigurator.Configure();

, когда вы добавляете ссылку на DLL Log4net, убедитесь, что его «копировать локальное» свойство для "правда".

Это не специфично для Fluentnnernate, он работает так же в любом варианте Nibernate.

33
ответ дан 7 November 2019 в 11:23
поделиться

Я не пробовал этого с SQL Server, но с SQLite, следующий код покажет сгенерированный SQL в окне Output (Меню отладки -> Windows -> Output, в VS2008).

Комбинированное окно "Show output from:" в окне Output должно быть установлено в "Debug" - VS2008 сделала это для меня автоматически.

            sessionFactory = Fluently.Configure()
                .Database(SQLiteConfiguration.Standard
                            .UsingFile(DbFile)
                            // Display generated SQL in Output window
                            .ShowSql()
                          )
                .Mappings(m => m.AutoMappings.Add( GetAutoPersistenceModel() ))
                .BuildSessionFactory()
                ;

Слово предупреждения - включение этой опции может значительно замедлить выполнение.

10
ответ дан 7 November 2019 в 11:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: