zoukankan      html  css  js  c++  java
  • NHibernate代码监视

    今天在使用NH连接MySQL的时候,突然想起来MySQL好像并没有类似于SQL SERVER Profiler的功能,那以后调试不是很操蛋吗?搞了半天,发现并没有办法,只好拐个弯解决问题:将NH中的生成的代码直接在VS中输出显示。

    /// <summary>
    /// SQL语句监视
    /// </summary>
    public class SQLWatcher : EmptyInterceptor
    {
        public override NHibernate.SqlCommand.SqlString OnPrepareStatement(NHibernate.SqlCommand.SqlString sql)
        {
            System.Diagnostics.Debug.WriteLine("===============SQL语句 - Start:===============");
            System.Diagnostics.Debug.WriteLine("    " + sql);
            System.Diagnostics.Debug.WriteLine("===============SQL语句 - End:===============");
            return base.OnPrepareStatement(sql);
        }
    }

    扩展方法:

    /// <summary>
    /// 创建可监视的SESSION
    /// </summary>
    /// <param name="sessionFactory"></param>
    /// <returns></returns>
    public static ISession CreateSqlWatcher(this ISessionFactory sessionFactory)
    {
        return sessionFactory.OpenSession(new SQLWatcher());
    }

    使用方法:

    public IList<SysUser> Test()
    {
        ISession session = NHibernateHelper.SessionFactory.CreateSqlWatcher();
        var list = session.Query<SysUser>().ToList();
        var list2 = session.Query<SysUser>().Select(m => new {m.Id, m.UserName}).ToList();
        return list;
    }

    产生的两条SQL语句

  • 相关阅读:
    在peoplecode中直接调用SQR
    想起了李雷和韩梅梅
    结婚两周年纪念
    Unix Command Summary
    在PeopleSoft中如何隐藏菜单,导航栏,以及其他定制化链接
    那些朋友们
    整天工作的人为何当不了富翁
    ActiveX简单介绍
    SQL UNION
    Java程序设计问答大全(一)
  • 原文地址:https://www.cnblogs.com/wms01/p/6246869.html
Copyright © 2011-2022 走看看