架构师_程序员_码农网

查看: 44|回复: 0
打印 上一主题 下一主题

[资料] EF Core 系列(四)查看生成的 SQL 语句

[复制链接]
跳转到指定楼层
楼主
发表于 2021-2-19 13:36:34 | 只看该作者
EF Core 系列(二)封装 OnModelCreating 利用反射创建索引等
https://www.itsvse.com/thread-9392-1-1.html

EF Core 系列(三)实体框架影子属性[转载]
https://www.itsvse.com/thread-9558-1-1.html


在开发中,使用 ef core 框架,在使用 linq 或则 Lambda 表达式的时候,无法直接查看 sql 语句,不方便我们排查或者优化性能,如何查看 ef core 生成的 sql 语句呢?

本文以 ef core 5 为例,查看输出 ef 生成的 sql 语句。


首先,在 startup 文件新建一个 consolelogger 工厂变量为“ConsoleLoggerFactory”,生成的 sql 语句将输出到控制台,代码如下:

在 ConfigureServices 方法配置 DbContext 添加日志输出,代码如下:

启动项目,查看控制台输出,如下:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT [a].[Id], [a].[Disabled], [a].[Link], [a].[Name], [a].[PinYin], [a].[Position], [a].[_CreateTime], [a].[_CreateTimeStamp], [a].[_UpdateTime], [a].[_UpdateTimeStamp]
      FROM [Area] AS [a]
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (19ms) [Parameters=[p0='?' (Size = 4000)], CommandType='Text', CommandTimeout='30']
      SELECT * FROM Area WHERE pinYin = @p0
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT * FROM Area


如果带有 where 条件的 sql 语句,只能查看参数化的变量,无法查看具体传入的值,增加如下配置:

使应用程序数据能够包含在异常消息、日志等中。

这可以包括分配给实体实例属性的值,

发送到数据库的命令的参数值,以及其他此类数据。

只有在有适当的安全措施时才应启用此标志

基于这些数据的敏感性。

请注意,如果应用程序正在通过

打电话给Microsoft.EntityFrameworkCore.DbContextOptions生成器.UseInternalServiceProvider(系统.IServiceProvider),

然后,对于该服务提供者的所有使用,必须以相同的方式配置此选项。

考虑不打电话Microsoft.EntityFrameworkCore.DbContextOptions生成器.UseInternalServiceProvider(系统.IServiceProvider)

因此EF将管理服务提供者,并可以根据需要创建新实例


完整设置如下:

效果图如下:



当然,以上设置也可以通过重写 DbContext 的 OnConfiguring 方法进行配置(不推荐):

(完)




上一篇:金融 TipRanks 股票分析评级
下一篇:EF Core 系列(五)执行 SQL 语句或者视图、存储过程
帖子永久地址: 

架构师_程序员_码农网 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与架构师_程序员_码农网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和架构师_程序员_码农网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、架构师_程序员_码农网管理员和版主有权不事先通知发贴者而删除本文

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2021-3-1 09:25

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表