[NHibernate]查看NHibernate生成的SQL语句_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > [NHibernate]查看NHibernate生成的SQL语句

[NHibernate]查看NHibernate生成的SQL语句

 2014/12/6 2:49:04  草茗  程序员俱乐部  我要评论(0)
  • 摘要:最近接触到一个用Spring.Net结合NHIbernate的项目,第一次使用,有很多配置,数据操作一旦出问题,很难找到原因,那么如何查看NHibernate发送给数据库的SQL语句呢?当然我们可以通过log4net记录日志来查看,但稍微有些繁琐,于是找到了另一种方法来查看。NHIbernate中的IInterceptor接口中定义的OnPrepareStatement(SqlStringsql)可以观察到生成的sql,由EmptyInterceptor来实现
  • 标签:SQL SQL语句 hibernate

最近接触到一个用Spring.Net结合NHIbernate的项目,第一次使用,有很多配置,数据操作一旦出问题,很难找到原因,那么如何查看NHibernate发送给数据库的SQL语句呢?

当然我们可以通过log4net记录日志来查看,但稍微有些繁琐,于是找到了另一种方法来查看。

NHIbernate中的IInterceptor接口中定义的OnPrepareStatement(SqlString sql)可以观察到生成的sql,由EmptyInterceptor来实现。

[Serializable]
public class EmptyInterceptor : IInterceptor
{   
    //其他方法省略
public virtual SqlString OnPrepareStatement(SqlString sql); }

我们所要做的就是继承EmptyInterceptor,然后重写OnPrepareStatement方法。

public class SQLWatcher : EmptyInterceptor
{
    public override SqlCommand.SqlString OnPrepareStatement(SqlCommand.SqlString sql)
    {
        return base.OnPrepareStatement(sql);
    }
}

在重写的方法里,你就可以用任何方法来监控你的所想要监控的SQL语句了。

最后在创建ISession的地方加入你所创建的拦截类就可以了。

public static ISession OpenSession()
{
     return SessionFactory.OpenSession(new SQLWatcher());
}

运行效果如下:

发表评论
用户名: 匿名