关于EF6的记录Sql语句 与 EntityFramework.Extend 的诟病
2016-06-28 12:45
633 查看
1、关于EF6的记录Sql语句,一个老生长谈的问题。 他生成的sql语句实在是烂,大家都这样说
2、EF6 更新删除不方便,没有批量操作。所以,有人出了EF6.Extend 大家用起来也很爽
基于以上两点,我也尝试着使用 EF6.Extend 。本以为可以很好的,很美好。没有想到我遇到了一个大问题。
我需要 通过程序记录 EF执行的Sql语句,当然也包括 EF6.Extend 执行的Sql语句。(不是通过SqlProfiler)
在网上查找,发现 了一篇文章,我就这样抄下来了。(太匆忙解决问题,忘记了哪一篇)
继承了 System.Data.Entity.Infrastructure.Interception.DbCommandInterceptor ,实现相关方法。 然后在Main方法(程序入口)进行添加 DbInterception.Add(new EFIntercepterLogging());
EF 自定义的SQL执行
就这样,我 通过统一的方式,获取到了我自己执行的Sql语句,和EF执行的Sql语句
本来是打算用EF.Extend的,看到这里,我决定不用了,有点杀鸡用牛刀。(其实,EF.Extend 不仅扩展了修改和删除的方法,还扩展了 EF没有的二级缓存,等等。如果只是用到修改删除的扩展方法,那可以放弃Extend了。)
修改后的DLL文件
2、EF6 更新删除不方便,没有批量操作。所以,有人出了EF6.Extend 大家用起来也很爽
基于以上两点,我也尝试着使用 EF6.Extend 。本以为可以很好的,很美好。没有想到我遇到了一个大问题。
我需要 通过程序记录 EF执行的Sql语句,当然也包括 EF6.Extend 执行的Sql语句。(不是通过SqlProfiler)
在网上查找,发现 了一篇文章,我就这样抄下来了。(太匆忙解决问题,忘记了哪一篇)
继承了 System.Data.Entity.Infrastructure.Interception.DbCommandInterceptor ,实现相关方法。 然后在Main方法(程序入口)进行添加 DbInterception.Add(new EFIntercepterLogging());
System.Data.Common.DbConnection con = t.Database.Connection; System.Data.Common.DbCommand command = con.CreateCommand(); con.Open(); command.CommandText = "delete from area where 1=2 and 4=9"; DbInterception.Dispatch.Command.NonQuery(command, new DbCommandInterceptionContext());
EF 自定义的SQL执行
就这样,我 通过统一的方式,获取到了我自己执行的Sql语句,和EF执行的Sql语句
本来是打算用EF.Extend的,看到这里,我决定不用了,有点杀鸡用牛刀。(其实,EF.Extend 不仅扩展了修改和删除的方法,还扩展了 EF没有的二级缓存,等等。如果只是用到修改删除的扩展方法,那可以放弃Extend了。)
修改后的DLL文件
相关文章推荐
- 【jmter】JDBC进行mysql数据库测试
- TimesTen 数据库复制学习:9. 更改Active Standby Pair
- django中的一个数据库错误 django.db.utils.InternalError: 1366
- 大一数据库系统概论期末复习参考
- mysql笔记之常用备份还原
- mysql语句:批量更新多条记录的不同值
- 备份图解 ---mysql 博客
- MySQL5.6监控表之INNODB_METRICS
- MongoDB aggregate 运用篇
- Oracle中奇怪的【不等于号】
- Redis的正确安装方式
- MYSQL-----视图
- oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务。
- mysql基本sql语句大全(基础用语篇)
- mysql基本sql语句大全(提升用语篇)
- 在Abp中执行sql语句
- sqlserver数据库18456错误怎么解决?
- Mongodb常用命令介绍
- mybatis 打印sql log配置
- mysql中char,varchar与text类型的区别和选用