c# - 记录 NHibernate SQL 查询

标签 c# .net nhibernate

有没有办法在我的代码中访问完整的 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/

相关文章:

c# - 映射 GridView ASP/C# 的单元格/列中的值

c# - Access-Control-Allow-Origin 在 header 请求 ASP.NET Web API 中出现两次

.net - WIX:更改添加/删除程序图标不起作用

c# - nHibernate,将两个属性映射到同一个类

c# - 在 C# 中是否有等价于 std::set 的东西?

c# - unity rigidbody2d倾斜问题

c# - 如何使用ConfigurationManager来存储结构化数据?

.Net 超时 : WaitForSingleObject vs Timer

wcf - 使用 Silverlight、WCF 和 nHibernate 的多层架构

postgresql - 从 Postgresql 数据库获取 .Net 中的登录用户