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语句

  • 相关阅读:
    js 对象合并
    python3 TypeError: 'str' does not support the buffer interface in python
    django rest framework 再撸体验
    linux shell输入重定向
    httpie 取代 curl
    wget 断点续传 & nginx文件服务器
    select2 demo
    vmare centos 6.8 minimal 无法上网
    protocol http not supported or disabled in libcurl apt-get
    python3 -pip
  • 原文地址:https://www.cnblogs.com/wms01/p/6246869.html
Copyright © 2011-2022 走看看