Существует ли способ получить доступ к полному SQL-запросу, включая значения, в моем коде?
Я в состоянии зарегистрировать SQL-запросы с помощью log4net:
<logger name="NHibernate.SQL" additivity="false">
<level value="ALL"/>
<appender-ref ref="NHibernateSQLFileLog"/>
</logger>
Однако я хотел бы найти способ зарегистрировать SQL-запросы от кода также. Таким образом, я зарегистрирую определенный SQL-запрос, который вызывает исключение в моем операторе попытки/выгоды.
Прямо сейчас у меня есть к моему данными SQLFileLog для нахождения запроса, который вызвал исключение, когда исключение происходит, и это не эффективно.
Либо используйте sql profiler, либо посмотрите nhprof на http://nhprof.com/
Оба позволят вам увидеть вывод sql.
Также установите свойство show_sql в конфигурационном файле hibernate
<property name="show_sql">true</property>
Используйте приложение log4net с определенной целью (оно поддерживает включение / выключение) или просто расширьте его и включите в своем try-catch-finally- выключенный.
вы можете использовать перехватчик для этого:
public class LoggingInterceptor : EmptyInterceptor {
public override SqlString OnPrepareStatement(SqlString sql) {
Debug.WriteLine(sql);
return sql;
}
}
Смотрите Nhibernate Docs для различных способов регистрации в nhibernate.