標籤:system dia username 技術 span profile summary public bug
今天在使用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代碼監視