如何实现输出查询WITH参数的Interceptor?我已经搜索了网络和stackoverflow很长一段时间,但没有找到我的问题的答案。我的自定义拦截器类目前看起来像这样:
public class SQLDebugOutput : EmptyInterceptor, IInterceptor {
public override NHibernate.SqlCommand.SqlString OnPrepareStatement(NHibernate.SqlCommand.SqlString sql) {
System.Diagnostics.Debug.WriteLine("NH: " + sql.ToString());
return base.OnPrepareStatement(sql);
}
}
查询中的参数显示为问号,我需要它们用于调试目的。此外,我更喜欢不使用Log4Net Logger的解决方案。
那么,根本不可能使用拦截器检索查询的参数值吗?也许通过覆盖它的其他方法?
答案 0 :(得分:0)
作为SqlString
方法的参数提供的OnPrepareStatement
类型具有GetParameters()
方法,该方法返回Parameter
个对象的集合。查看代码表明应该可以查询这些对象,并希望找到您正在寻找的内容。