分享好友 最新资讯首页 最新资讯分类 切换频道
猎头公司网站素材/seo外链论坛
2024-12-27 23:23

(给DotNet加星标,提升.Net技能)

转自:LamondLucnblogs.com/lwqlun/p/13551149.html

前言

笔者最近在开发和维护一个.NET Core项目,其中使用几个非常有意思的.NET Core相关的扩展,在此总结整理一下。

EF Core性能调优

如果你的项目中使用了EF Core, 且正在处于性能调优阶段,那么了解EF Core生成的SQL语句是非常关键的。那么除了使用第三方工具,如何查看EF Core生成的SQL语句呢?这里笔者将给出一个基于.NET Core内置日志组件的实现方式。

创建一个实例项目

我们首先建一个控制台程序,在主程序中我们编写了一个最简单的EF查询。

这里为了演示,我们提前创建了一个MySql数据库,并在项目中创建了一个对应的EF Core上下文。当前上下文中只有一个User实体,该实体只有2个属性UserId和UserName。

如何生成的SQL语句输出到控制台

.NET Core中提供了非常完善的日志接口。

这里为了和.NET Core的日志接口集成,我们需要实现2个接口,一个是日志提供器接口ILoggerProvider, 一个是日志接口ILogger

EFLoggerProvider的代码非常的简单,就是直接返回一个我们后续创建的EFLogger对象。

这里我们主要使用了内置的formatter格式化了日志信息。

最后我们还需要将自定义的日志处理类和EF Core集成起来。这里我们需要复写上下文类的OnConfiguring方法。在其中通过UseLoggerFactory方法,将我们自定义的日志处理类和EF Core的日志系统关联起来。

下面我们启动项目,看一下效果。这里日志信息正确的显示出来了。

PS: 如果项目中使用了通用主机或者ASP.NET Core, 你也可以在服务配置部分,通过DbContextOptions参数配置。

如何去除无关日志

在前面的步骤中,我们成功的输出了查询语句,但是有一个问题是我们只想查看输出的SQL语句,其他的信息我们都不想要,那么能不能去除掉这些无关日志呢?答案是肯定的。

我们可以在Log方法中,通过分类名称,只输出Microsoft.EntityFrameworkCore.Database.Command分类下的日志,该日志即生成的SQL语句部分。

这里我们也做了一些其他的操作,通过修改控制台输出文本的颜色,高亮了生成的SQL语句。重新启动项目之后,效果如下。

如何显示敏感数据

这里看似我们已经完成了EF Core的语句输出,但是在实际使用中,你还会遇到另外一个问题。

下面我们修改一下我们的主程序,我们尝试插入一条User信息。

重新运行程序,你会得到一下结果。

这里你可能会问为什么不显示@p0, @p1参数的值。这里是原因是为了保护敏感数据,EF Core默认关闭的敏感数据的显示配置,如果你想要查看敏感数据,你需要通过DbContextOptionsBuilder对象的EnableSensitiveDataLogging方法修改敏感数据日志配置。

重新启动项目之后,你就能看到@p0, @p1参数的值了。

- EOF -

推荐阅读  点击标题可跳转.NET数据库事务的各种玩法进化理解C#中的ConfigureAwait.NET Core 3.1 + EF Core + LayUI 管理系统

看完本文有收获?请转发分享给更多人

关注「DotNet」加星标,提升.Net技能 

最新文章
夜色帮福利网站首页网友认为该网站提供的资源丰富多样,界面设计简洁易用,但部分内容更新较慢,希望能加强维护和更新
  最新消息:某知名论坛近日发布了一项关于网络资源平台的调查,结果显示用户对各类资源网站的需求持续增长,尤其是内容丰富且
沃尔玛23届秋招AI面面经火热出炉
沃尔玛2023届秋招AI面的面经来啦!我面的是山姆的管培生AI面需要通过微信小程序打开面试的总时长在10分钟左右一共有六题1. 自我
从零开始开发微信小程序-资源准备
        工欲善其事,必先利其器。 在完成小程序的申请之后,接下来就要着手准备开发环境和服务器的相关资
百家姓氏的传说故事--孙
辛丑年己亥月戊寅日 星期五 (第三期)百家姓 (传统蒙学三大读物之一) 是一部关于汉字姓氏的作品,按文献记载,成文于北宋初。
Socket的两种类型
SOCKET有两种类型:流式Socket(STREAM):是一种面向连接的Socket,针对于面向连接的TCP服务应用,安全,但是效率低;数据报式S
路由优化大师手机版下载
路由优化大师手机版是家庭路由器设置管理专家、无线网络优化专家,可以屏蔽视频广告,限制连接用户的网速,拉黑蹭网用户,修改Wi
解锁码
“无刷机,不安卓”的口号在华为手机身上已经不再适用,我们都知道如果想要刷机就必须得解锁设备BootLoader,华为日前已经彻底关
有个游戏叫什么庄园分享 经典的庄园游戏排行2024
名称里面带有庄园两个字的多半都是经营主题的手游,许多佛系游戏爱好者都喜欢在虚拟的庄园中尝试经营,那么有个游戏叫什么庄园是
【U7搜狗手机输入法下载】天语U7搜狗手机输入法12.1.1免费下载
搜狗输入法,拥有超大中文词库,输入更加精准,智能。搜狗智能旺仔带你用表达,斗图,妙语,输入更加有趣。******特色功能******
相片外链的威力:提升网站能见度和流量
概述在当今竞争激烈的数字环境中,网站外链对于提升网站能见度和吸引流量至关重要。相片外链是一种强大的策略,可以帮助网站获得