【问题标题】:NHibernate Intercept SQL Statement and ParametersNHibernate 拦截 SQL 语句和参数
【发布时间】:2026-02-16 22:40:01
【问题描述】:

这个问题和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语句,但似乎无法获取参数。有人尝试过实现它吗?

【问题讨论】:

  • @Felice Pollano 我可以,但并不理想。因为我使用 SQLite 实现单元测试(在生产代码中我使用 SQL Server),所以在 VS 输出窗口中显示语句可能会更快。
  • 可以的,看看回复。如果您只想看看会发生什么,则无需创建特殊的附加程序

标签: nhibernate interceptor


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】: