首页 > 学院 > 开发设计 > 正文

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

2019-11-17 01:54:34
字体:
来源:转载
供稿:网友

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

最近接触到一个用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());}

运行效果如下:

转载请注明来源:http://www.VEVb.com/caoming/p/4147600.html


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表