NHibernate Intercept SQL-оператор и параметры

Этот вопрос почти такой же, как перехват операторов SQL, содержащих сгенерированные значения параметров от NHibernate, но ответа пока нет.

Public Class SqlStatementInterceptor
    Inherits EmptyInterceptor
    Implements IInterceptor

    Public Overrides Function OnPrepareStatement(sql As SqlString) As SqlString
        Debug.WriteLine(String.Format("{0} - {1}", DateTime.Now, sql.ToString()))
        Return sql
    End Function
End Class

Я могу захватить оператор SQL, но, похоже, не могу получить параметры. Кто-нибудь когда-нибудь пытался достичь этого?


person hardywang    schedule 28.12.2011    source источник
comment
@ Феличе Поллано Я мог бы, но не идеально. Поскольку я реализую модульный тест с помощью SQLite (в производственном коде я использую SQL Server), может быть быстрее показать оператор в окне вывода VS.   -  person hardywang    schedule 28.12.2011
comment
Вы можете, посмотрите на ответ. Нет необходимости создавать специальный аппендер, если вы просто хотите посмотреть, что произойдет   -  person Felice Pollano    schedule 28.12.2011


Ответы (2)


Вам нужно написать приложение log4net. Вот как NNHProf получает информацию. Существует также проект codeplex под названием NHibernate 3.0 SQL Logger, в котором используется этот метод.

person Toni Parviainen    schedule 28.12.2011

Вы можете использовать log4net с TraceAppender, а также свойство format_sql=true в конфигурации, которое помогает в удобочитаемости. Используемый регистратор — NHibernate.SQL.

person Felice Pollano    schedule 28.12.2011