NHibernate拦截SQL语句和参数

时间:2011-12-28 16:39:24

标签: nhibernate interceptor

这个问题与Intercept SQL statements containing parameter values generated by 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语句,但似乎无法获取参数。有人试图实现吗?

2 个答案:

答案 0 :(得分:4)

您需要编写log4net appender。这就是NHProf获取信息的方式。还有一个名为NHibernate 3.0 SQL Logger的codeplex项目使用了这种技术。

答案 1 :(得分:1)

您可以将log4netTraceAppender一起使用,并在配置中使用format_sql=true属性以帮助提高可读性。要使用的记录器是NHibernate.SQL