NHibernate输出SQL语句
2015-06-09 17:58
323 查看
用了NHierbate之后,很少需要写原生的SQL语句,由于总是看不到SQL语句,所以有时候对SQL调优非常不利。因此产生了让NHibernate输出它所生成的SQL语句的想法,以便于后续调优。
第一个参数用于配置是否输出SQL语句到控制台。
第二个参数用于输出的SQL语句是否格式化以便于查看。
只设置第一个与两个都设置的差别如下:
只显示不格式化:
![](http://www.mashangpiao.net/upload/image/20150608/6356940133454120756453392.png)
格式化后:
![](http://www.mashangpiao.net/upload/image/20150608/6356940136173561113748372.png)
上面的方法是配置控制台显示的,如果不在控制台里执行,是Web程序呢。
第一步:写一个类,继承自EmptyInterceptor并重写OnPrepareStatement方法。
第二步:在创建OpenSession的时候,用此类的对象作为参数传入
效果如下:
![](http://www.mashangpiao.net/upload/image/20150608/6356940164256611479653570.png)
参考:http://www.mashangpiao.net/Article/Content/53
一、在控制台输出SQL语句
在控制台程序中,要查看NHibernate所生成的SQL语句,方法非常简单,只需要改下配置文件就OK了。<property name="show_sql">true</property> <property name="format_sql">true</property>
第一个参数用于配置是否输出SQL语句到控制台。
第二个参数用于输出的SQL语句是否格式化以便于查看。
只设置第一个与两个都设置的差别如下:
只显示不格式化:
![](http://www.mashangpiao.net/upload/image/20150608/6356940133454120756453392.png)
格式化后:
![](http://www.mashangpiao.net/upload/image/20150608/6356940136173561113748372.png)
上面的方法是配置控制台显示的,如果不在控制台里执行,是Web程序呢。
二、Web程序输出SQL语句到“调试窗口”
Web程序输出的方式也不难。第一步:写一个类,继承自EmptyInterceptor并重写OnPrepareStatement方法。
public class SQLWatcher : EmptyInterceptor { public override NHibernate.SqlCommand.SqlString OnPrepareStatement(NHibernate.SqlCommand.SqlString sql) { System.Diagnostics.Debug.WriteLine("sql语句:" + sql); return base.OnPrepareStatement(sql); } }
第二步:在创建OpenSession的时候,用此类的对象作为参数传入
ISession session = sessionFactory.OpenSession(new SQLWatcher());
效果如下:
![](http://www.mashangpiao.net/upload/image/20150608/6356940164256611479653570.png)
参考:http://www.mashangpiao.net/Article/Content/53
相关文章推荐
- sql server 各种函数
- 数据库锁
- 解读郭神LitePal源码-数据库的创建以及如何修改源码来创建外置数据库
- SQL Server-1
- c#实现redis客户端(一)
- 数据库水平切分的实现原理解析——分库,分表,主从,集群,负载均衡器
- 数据库设计的完整性约束表现
- oracle 中存储过程无法编译。卡死, session kill 不掉。
- PL/SQL Developer自动补全SQL技巧
- xtrabackup备份数据库
- MySQL安全配置
- IIS日志(Sql注入)
- 数据库事务
- oracle11g dataguard 安装手册(转)
- Memcached源码分析之二
- mysql Could not initialize master info structure 解决方法
- Redis教程01
- 自己实现mysql “函数索引”
- 安装使用percona版本mysql
- MySQL集群搭建步骤详解