上篇文章中我们提到可以通过重写NHibernate的 EmptyInterceptor 拦截器来监控NHibernate发送给数据库的SQL脚本,今天看到有朋友用LINQPad工具来进行NHibernate生成的SQL语句监控,试了下感觉更直观了。当然这不是LINQPad的主要功能,但我们可以通过这种方法来达到我们的目的。
接下来,我们看一下如何使用LINQPad来查看NHibernate发送给数据库的SQL。
1.按F4进入Query Properties,或者Query->Query Propertiesl。在这里添加NHibernate和你所使用的Entity相关dll文件。
2.在Additional Namespace Imports选项卡中,点击Pick from assemblies 将所用到的命名空间添加进来。
3.返回到主界面,编写测试代码,并执行。
这样就可以很直观的看到生成的SQL语句和查询的结果了。
Configuration config = new Configuration().Configure(@"D:\Norton.Demo\NHibernate\Norton.Demo.NHibernate\NHibernate\hibernate.cfg.xml");
var SessionFactory = config.BuildSessionFactory();
using(var session = SessionFactory.OpenSession())
{
var list = session.CreateCriteria<Product>()
.Add(Restrictions.Eq("Name", "Apple"))
.UniqueResult<Product>();
list.Dump();
}