分享好友 最新资讯首页 最新资讯分类 切换频道
猎头公司网站素材/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技能 

最新文章
【数据结构】八大排序——冒泡排序
八大排序中其他排序 直接插入排序 希尔排序 选择排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简
《不要忘记我爱你》明日上线爱奇艺,爱情电影背景音乐推荐
《不要忘记我爱你》是由黄真真执导,古力娜扎、刘以豪领衔主演,张歆艺特别出演,马志威友情出演,张扬、罗辑等主演的爱情电影。
pptv电视hdmi PPTV电视是什么牌子
在当前数字化转型的动向下,网络视频平台扮演着极为重要的角色。PPTV作为国内领先的视频平台其中一个,其安卓电视HD版本在用户群
一键生成专业PPT:零基础也能轻松制作神器
零基础也能轻松制作PPT?根据内容自动生成ppt神器来了!随着科技的不断发展,人们对于工作和生活中的效率要求越来越高。尤其是在
Midjourney+Stable Diffusion 多角色图片细节放大处理|AI绘画
Midjourney作为在AIGC领域中表现非常优异的一个工具,与stable diffusion也是各有优劣,Midjourney可以通过自然语言描述以及非常
一周全球主要上市公司业绩和财务信息公布日程(11月2日—6日)
11月2日(周一)PayPal雅诗兰黛(Estee Lauder)亿滋国际(Mondelēz International)发那科(Fanuc Corporation)高乐氏(Clorox)思佳讯(
Java数据结构之常见排序算法(上)
在学校中,如果我们要参加运动会,或者军训的时候,会按照身高从矮到高进行站队,比如上课老师手上拿的考勤表,通常是按照学号从
H5、微商城、微信公众号、小程序定制本质区别和优劣点?
为什么又要开发小程序呢?小程序、H5、微信公众号定制、微商城有什么区别?天勤振邦小编为你解答。H5开发定义: HTML,就是你跟
OpenAI 大神亲授,每个人都能看懂的大模型入门教程
这是来自 AI 界世界级导师,OpenAI top 级人物 Andrey Karpathy 的大语言模型入门讲座,讲座主题是 The busy person
【黑马早报】余承东再否认禁提遥遥领先;雷军聊年龄焦虑透露这一消息;多地共享单车上调起步价;蔚来李斌:坚决不做无人出租车...
今日头条证监会:加强市场风险综合研判和应对7月29日,中国证监会召开学习贯彻二十届三中全会精神暨年中工作会议,部署进一步全