首页 > 代码库 > [NHibernate]查看NHibernate生成的SQL语句
[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());}
运行效果如下:
[NHibernate]查看NHibernate生成的SQL语句
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。