有没有办法在我的代码中访问完整的 SQL 查询,包括值?
我能够使用 log4net 记录 SQL 查询:
<logger name="NHibernate.SQL" additivity="false">
<level value="ALL"/>
<appender-ref ref="NHibernateSQLFileLog"/>
</logger>
但是,我也想找到一种方法来从代码中记录 SQL 查询。这样,我将在我的 try/catch 语句中记录导致异常的特定 SQL 查询。
现在我必须对 SQLFileLog 进行数据挖掘,以在发生异常时找到导致异常的查询,但效率不高。
最佳答案
你可以使用拦截器来做到这一点:
public class LoggingInterceptor : EmptyInterceptor {
public override SqlString OnPrepareStatement(SqlString sql) {
Debug.WriteLine(sql);
return sql;
}
}
参见 Nhibernate Docs (webarchive)了解使用 nhibernate 注册它的不同方法。
关于c# - 记录 NHibernate SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2198869/