如何从NHibernate的操作中获取自动生成的SQL语句?

时间:2009-08-29 07:51:07

标签: nhibernate

我遇到了一个棘手的问题。我必须将指定的数据库操作记录到我的数据库日志表中。它是一个自定义表,与任何系统数据库表无关。它采用SQL语句的形式,但我使用NHibernate作为我的数据访问方法。

那我怎么做呢?

2 个答案:

答案 0 :(得分:0)

确保记录所有命令的唯一方法是设置SQL跟踪并将所有命令记录到SQL Server表中。

答案 1 :(得分:0)

虽然我必须自己尝试以确保,但您应该能够使用自定义拦截器来执行此操作。检查IIInceptor并从EmptyInterceptor继承。这样的事情应该有效:

public class LogSqlInterceptor : EmptyInterceptor {     
  public SqlString OnPrepareStatement(SqlString sql) {
    logger.Log(sql.ToString());
  }
}

logger显然是用于记录sql语句的任何内容。它可能只是File.WriteLine()。我相当肯定这会做你想要的,但我现在无法测试它。