zoukankan      html  css  js  c++  java
  • [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.cnblogs.com/caoming/p/4147600.html

  • 相关阅读:
    [PA2014]Muzeum
    [AMPPZ2014]Jaskinia
    [PA2015]Rozstaw szyn
    LOJ 6713 「EC Final 2019」狄利克雷 k 次根 加强版
    Problem. R
    51nod 2583 数论只会Gcd
    51nod 1847 奇怪的数学题
    51nod 1575 Gcd and Lcm
    Problem. Q
    CF868G El Toll Caves
  • 原文地址:https://www.cnblogs.com/caoming/p/4147600.html
Copyright © 2011-2022 走看看