NHibernate Interceptor - >带参数的输出查询

时间:2018-03-14 08:21:05

标签: c# .net logging nhibernate interceptor

如何实现输出查询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的解决方案。

那么,根本不可能使用拦截器检索查询的参数值吗?也许通过覆盖它的其他方法?

1 个答案:

答案 0 :(得分:0)

作为SqlString方法的参数提供的OnPrepareStatement类型具有GetParameters()方法,该方法返回Parameter个对象的集合。查看代码表明应该可以查询这些对象,并希望找到您正在寻找的内容。