前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.NETer们,你真的应该了解下EF Core3.x了!

.NETer们,你真的应该了解下EF Core3.x了!

作者头像
Enjoy233
发布2020-04-01 16:56:52
1K0
发布2020-04-01 16:56:52
举报
文章被收录于专栏:大白技术控的技术自留地

本期导读:

技术文,带你了解关于EntityFrameworkCore3.x的那些事,本文共1493个字,阅读大约需要3分钟。文末福利不要错过哦!

是的,各位.Neter,不用怀疑,使用O/RM的开发者越来越多了,从风起云涌的各式O/RM框架都可见一斑了。以下是我用过的一些。

NHibernate

SqlSugar

Dos.ORM

Dapper

PetaPoco

EntityFramework

EntityFrameworkCore

其中NHibernate是我使用过的第一个O/RM框架,开始惊艳慢慢乏味,轻量级的Dapper也深受喜爱。奈何我是微软忠粉,从最早的未完成产品LinqToSql追到EntityFramework的N个版本,然后终于在.NetCore里面寻到了我想要的O/RM,EntityFramworkCore3.1(后续简称EFCore)。下面我认真给.Neter们科普下EFCore的新东西,相信你也会爱上的。

1

直面O/RM性能差

说到O/RM,很多人会嗤之以鼻,性能差,这是真的吗?所谓ORM,其实就是用面向对象的思想来封装对数据库的访问操作,能以操作对象的方式来完成数据库的操作。开发者不用关心数据库,甚至可以完全不用写Sql,确实是件好事儿!那为啥会说性能差呢?

成也萧何败也萧何,正是因为自动化了数据库操作,该过程是僵硬的,会导致在复杂的数据库环境下无法保障性能。但这怪O/RM框架吗?一方面O/RM设计的目标只是简化Sql,另一方面来说,使用O/RM性能差更多是使用的问题,而不是框架的问题。没有低性能的框架,只有不会用的开发者!当然,优秀的框架是能让开发者更简单更高效,EFCore里面,就有多个跟性能相关的新特性,一起来看看!

2

EFCore前世今生

2008年发布了EntityFramework第一个版本3.5,到2017年发布的6.2.0最新版本,累计发布了16个正式版本,常规O/RM框架能做的事儿,EF也已经做得非常优秀了。而EFCore则是站在巨人的肩膀上的,当下最新版本EFCore3.1还包含了多个前所未有的新特性,可谓是开发者福音!(为配合.Net5,EFCore下一个版本也叫EFCore5)

(1)Sql索引支持

数据查询时,通过控制linq语句顺序,可以做到走索引,现在EFCore在Code Fitst时,在ModelCreating里面可以直接配置非聚集索引了,主键还是默认聚集索引的。担心O/RM性能的小伙伴儿,有必要来好好看看。

(2)数据库读写分离支持

读写分离是中大型项目必备了,EFCore本身可以通过option来支持,轻松实现单Context连接多数据库,完成数据库读写分离支持。不过在实际开发中,我更愿意封装一层ContextFactory来管控,还能做到复杂均衡。

(3)便携数据库迁移

项目开发中,数据库结构的变更一般都是脚本支持,面对数据结构结构的的变更,数据的升级,只能编写复杂的Sql脚本;老师就有过惨痛的经历。而EFCore彻底解决了这个问题,每次数据库结构的变化,都可以保存一个数据库迁移文件,迁移文件轻松生成数据库。每个迁移文件对应数据;任何时期,都可以根据对应的迁移文件生成数据库。

1

EFCore内置Api直接生成数据库,一次配置轻松生成

2

EFTool工具迁移数据库,生成迁移文件再生成数据库

3

dotNet命令迁移,生成迁移文件,生成数据库

(4)内置数据转换器

使用O/RM开发的小伙伴儿,基本上都离不开AutoMapper,因为总会有些数据在存储和程序中的类型不一致,现在EFCore中直接内置了数据转换器,还支持自定义模式,原生支持让性能更高使用更轻松!

(5)各种数据库支持

EFCore基本上已经覆盖了市面上全部的主流关系型数据库,甚至还支持了内存数据库。一招鲜可以吃遍天了,简直了~ 说到封装框架,我不是针对谁,微软独一档!下面是整理的详细清单:

以上是EFCore中相对其他O/RM框架的一些新特性和优势,此外要在开发中应用好EFCore,还有蛮多需要学习的,比如数据初始化、Linq查询、复杂查询、延迟加载、惰性加载、级联删除、内置假删除,还有分布式环境下的数据一致性,分布式事务等等,都是不可或缺的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大白技术控 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档