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