.Neter们,你真的应该了解下EFCore3.x


本期导读:

技术文,带你了解关于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查询、复杂查询、延迟加载、惰性加载、级联删除、内置假删除,还有分布式环境下的数据一致性,分布式事务等等,都是不可或缺的。

这里给大家推荐一个EFCore专题课,一周特训,各种知识点一网打尽,原价288元课程本公众号粉丝限时免费,直接扫码进专用学习交流群!

按照惯例,再给大家来些福利了。本次专题是Asp.NetCore3.1+EFCore实战,需要配套的知识点很多,下面整理了一套预习资料,包括有我之前一套手写O/RM框架的源码,值得看看,赶紧扫码领取哈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/310809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 111二叉树的最小深度-简单

给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:2 示例 2: 输…

山东省中职信息技术c语言试题及答案,中职计算机专业C语言测试题

高三计算机专业C语言测试题(1)学号姓名:得分:一、选择题40’1、下列选项是C语言保留字的一项是()A DOB gosubC strutD CHAR2、下列选项中可以作为C语言用户标识符的一组是()A void , define, wordB a3_b3, _123, IFC for, _abc , caseD 2a, do, sizeof3、…

istio回归「单体应用」对我们的启发

大家好,我是Z哥。这次分享给大家的是一篇与技术相关的文章,但是我想表达的核心观点并不仅限于技术范围。我们中国有句古话,分久必合,合久必分。很多事物的发展都逃不开这个规律。如今,这件事也正在分布式、微服务概念大…

LeetCode 110平衡二叉树-简单

给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。示例 1: 输入:root [3,9,20,null,null,15,7] 输出:t…

c语言中如何使用面向对象编程,如何使用C语言的面向对象

我们都知道,C才是面向对象的语言,但是C语言是否能使用面向对象的功能?(1)继承性typedef struct _parent{int data_parent;}Parent;typedef struct _Child{struct _parent parent;int data_child;}Child;在设计C语言继承性的时候,我…

c语言开发环境 推荐,C语言复习和VC++6.0开发环境推荐.ppt

C语言复习和VC6.0开发环境推荐* * * * * * * * * F10-单步调试 F11-进入函数内部调试 ShiftF11-从函数内部回到调用函数(如main) CtrlF10-运行到光标处. ShiftF5-终止调试过程. * 是一个重要概念,可以有效地表示复杂的数据结构; 能动态分配内存&#xff…

LeetCode 112路径总和-简单

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root [5,4,8,11,…

ASP.NET MVC升级到ASP.NET Core MVC踩坑小结

写在前面ASP.NET Core是微软新推出的支持跨平台、高性能、开源的开发框架,它的优势不必多说,因为已经说得太多了。当然,现在依然有着数量庞大的系统运行于.NET Framework上,由于有大量的Break Changes,很多项目项目团队…

用函数求C15的值C语言,南开19春学期(1503、1509、1603、1609、1703)《C语言程序设计》在线作业-1辅导资料.docx...

南开19春学期(1503、1509、1603、1609、1703)《C语言程序设计》在线作业-1辅导资料.docx 南开19春学期(1503、1509、1603、1609、1703)C语言程序设计在线作业-11、D 2、B 3、C 4、A 5、D 一、单选题共40题,80分1、以下对一维整型数组 a 的正确说明是 Aint a10 ;Bint…

LeetCode 563二叉树的坡度-简单

给定一个二叉树,计算 整个树 的坡度 。 一个树的 节点的坡度 定义即为,该节点左子树的节点之和和右子树节点之和的 差的绝对值 。如果没有左子树的话,左子树的节点之和为 0 ;没有右子树的话也是一样。空结点的坡度是 0 。 整个树…

c语言简单快速排序原理,C语言之简单快速排序

快速排序是一种对冒泡排序的改进,运用了二分的思想,提高了效率,元素的交换是跳跃式的,更适合用在数组这样方便随机读取的顺序结构,平均时间复杂度NlogN。#include #include /*快速排序*/void input(int*,int);void out…

LeetCode 501二叉搜索树中的众数-简单

给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。 假定 BST 有如下定义: 结点左子树中所含结点的值小于等于当前结点的值 结点右子树中所含结点的值大于等于当前结点的值…

CIO/CTO都应该掌握和了解的EA(企业架构)

我们已进入数字化技术推动的第四次工业革命,是以工业互联网建设为标志。单纯从IT的视角管理信息化系统让许多企业深陷管理困境,解决问题也是按下葫芦浮起瓢。实际上,IT的服务对象是企业的战略、组织、管理、流程等一系列的要素,因…

c语言火车票管理系统源代码2000行,C语言教务管理系统[2000行代码].doc

专业资料精心整理C语言教务管理系统一、程序结构图二、程序运行截图1. 个人信息简介2. 修改颜色3. 注册界面4. 信息保存至文件5. 登录界面6. 管理员录入信息7. 学生信息录入8. 学生成绩录入9. 学生课程表录入10. 学生信息查询界面11学生信息查询12. 学生成绩查询13. 学生课表查…

LeetCode 530二叉搜索树的最小绝对值差-简单

给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。 示例: 输入: 1\3/2输出: 1 解释: 最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3&#xf…

扛并发主力军,引入应用层缓存

1.背景缓存的使用一定是今后开发中100%会用到的技术,尤其是Redis相关的问题,如果面试官不问我我几个缓存相关的问题,那我觉得我可能是去了个假的互联网公司。这里考虑到有些初学者刚刚出校园或者自学中,准许我多费口舌介绍下关于缓…

c语言筛法求一个范围内的素数,运用埃拉托色尼筛法求解一定范围内的素数.docx...

#includetypedef struct Node{int data;struct Node *link;}LinkList;void buildList(int max,LinkList *&head){//构建链表函数LinkList *l,*p;int i;head(LinkList*)malloc(sizeof(LinkList));head->linkNULL;lhead;for(i2;i<max;i){p(LinkList*)malloc(sizeof(Lin…

LeetCode 783二叉搜索树节点最小距离-简单

给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 示例 1&#xff1a; 输入&#xff1a;root [4,2,6,1,3] 输出&#xff1a;1 示例 2&#xff1a; 输入&#xff1a;root [1,0,48,null,null,12,49] 输出&#xff1a;1 提示&…

二级c语言作答文件不存在,全国计算机等级考试二级C语言上机考试题库及答案...

希望对有需要的人有帮助第1套 一、填空给定函数的功能是调用fun函数建立班级通讯录。通讯录记录每位学生的编号&#xff0c;姓名和电话号码。班级的人数和学生的信息从键盘读入&#xff0c;每个人的信息作为一个数据块写到名为答案yfile5.dat的二进制文件中。答案:1. STYPE 2. …