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

  • 相关阅读:
    开开心心
    HOW HE/SHE'S SEEN
    天池
    sql server deadlock跟踪的四种方法
    reduce 好东西
    object方法
    页面横向滚动 联动 进度条
    浅拷贝、深拷贝
    图片下载
    axios简单封装
  • 原文地址:https://www.cnblogs.com/wms01/p/6246869.html
Copyright © 2011-2022 走看看