前言
整理总结了一下,查看 .NET EF 生成的 SQL 语句的方式还是不少的,程序员的智慧果然不可限量 _
方式一:在 Web.config 中配置
- 评价:简单但耗性能,开发时可用
- 配置代码:
...... <entityFramework> <interceptors> <interceptor type="System.Data.Entity.Infrastructure.Interception.DatabaseLogger, EntityFramework"> <parameters> <parameter value="d:\eflog\efsql.log" /> <parameter value="true" type="System.Boolean" /> </parameters> </interceptor> </interceptors> ...... </entityFramework> </configuration>
- 说明
需要先创建好
d:\eflog
目录
方式二:代码,出错时写入 EF 生成的 SQL,方便调查(推荐)
- 第 1 种方法就是使用监听器拦截,参考前文 分享一个 .NET 通过监听器拦截 EF 消息写日志的详细例子,这种方法的优点就是一经配置,项目中所有使用 EF 的地方都可以拦截。
- 第 2 种方法就是在每一个使用 EF 的方法中加上以下语句:
DbConext.Database.Log = (c) => { console.write(c); }
3.这种方法的优点就是灵活,可以只写在有需要进行跟踪的 EF 方法里。
方式三:SQL Server Profiler,适合于开发阶段
- 前提是使用 SQL Server 数据库
- 实践中发现 SQL Server Profiler 的 SQL 比较多,需要做比较多的配置,对 SQL Server Profiler 不太熟悉的话,用起来比较困难。
- 评价:如果用的是 SQL Server 数据库,又不想采用方式一和方式二,可以试试这个
我是老杨,一个奋斗在一线的资深研发老鸟,让我们一起聊聊技术,聊聊程序人生,共同学习,共同进步