本期导读:

技术文,带你了解关于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框架的源码,值得看看,赶紧扫码领取哈。

.Neter们,你真的应该了解下EFCore3.x相关推荐

  1. 游戏化是通证经济的必由之路——与游戏化专家刘沐真的对话(下)

    文|孟岩 [按] 我在今年七月到八月期间与游戏化专家刘沐真进行了密集的交流,并整理了一个长篇对话,于8月10日发表了上半部分.这不是一个"热门话题",但是有其真实意义.发表之后,刘 ...

  2. 三问HPE,你真的想买下Nu­t­a­n­ix么?

    [全球存储观察 | 热点关注]据多个媒体消息报道,慧与科技HPE在近几个月与超融合提供商Nu­t­a­n­ix就收购进行了谈判. 在这之前的2017年2月,HPE以6.5亿美元收购了超融合全球老二Si ...

  3. linux g 编译目录下,你真的了解Linux下gcc编译器的工作过程吗?

    小豆丁:老张!老张! 老张:干嘛? 小豆丁:咋啦?愁眉苦脸的,是不是又被媳妇给揍了? 老张:开玩笑,我在家那就是相当于老虎的存在,谁敢揍我! 媳妇:老张,你说啥?我没听清,你再说一遍? 老张:我是老虎 ...

  4. 通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现[中篇]:请求响应

    <200行代码,7个对象--让你了解ASP.NET Core框架的本质>让很多读者对ASP.NET Core管道有了真实的了解.在过去很长一段时间中,有很多人私信给我:能否按照相同的方式分 ...

  5. 通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现[上篇]

    <200行代码,7个对象--让你了解ASP.NET Core框架的本质>让很多读者对ASP.NET Core管道有了真实的了解.在过去很长一段时间中,有很多人私信给我:能否按照相同的方式分 ...

  6. 各大厂抢招WPF,小米这回是下了血本啊...

    九银十进入尾声,小米又爆出高薪岗位:35k左右,14薪,招5年左右.NET,要求WPF和自动化( 职位:https://app.mokahr.com/apply/xiaomi/287/#/job/52 ...

  7. 面对金九银十铜十一你真的准备好了吗?

    作者:回首笑人间,高级Java工程师一枚,热爱研究开源技术,架构师社区合伙人! 前言:又是一年一度的金九银十跳槽季,回首在经历了半个月的求职奔波后,终于又能安稳的静下心来敲代码了,这期间一共面试了十几 ...

  8. ios下js复制到粘贴板_EXCEL被你忽视的粘贴板-11

    这一节我们来聊聊粘贴板的用途,什么?你居然没用过粘贴板?平时只是ctrl+c,然后ctrl+v,好吧,那我们看看粘贴板到底能干些啥. 1.提取区域内的内容 有时我们选择一块区域发给同事,但当他需要编辑 ...

  9. python端口转发_Python实现TCP/IP协议下的端口转发及重定向示例

    首先,我们用webpy写一个简单的网站,监听8080端口,返回"Hello, EverET.org"的页面. 然后我们使用我们的forwarding.py,在80端口和8080端口 ...

最新文章

  1. 网络基础---物理层
  2. 常用python分析数据包pipinstallnumpy_安装numpy和matplotlib时,pip依赖关系解析失败
  3. Android Kotlin之kotlin-android-extensions使用
  4. ES6_模块化_note
  5. gradle mysql方言_Ktorm | 方言与原生 SQL
  6. java 静态类实例_Java中多个类的静态实例?
  7. 详解Oracle数据货场中三种优化:分区、维度和物化视图
  8. TCP服务端开发为例--web开发不同url请求为何会走不同方法
  9. oracle 自治事务异常不回滚,ORA-06519: 检测到活动的自治事务处理,已经回退
  10. 数学分析 函数的连续性(第4章)
  11. Layui表单验证lay-verify属性
  12. 如何设置 IDEA炫酷主题样式
  13. 强化学习——Q-learning算法
  14. 我的Windows初始安装软件(技术型办公用电脑)
  15. 用javascript实现九九乘法口诀表
  16. 帝国cms网站管理系统之安全设置最优化分享
  17. iOS登录注册登录界面(UITextField)
  18. 【转载】ENDNOTE使用方法,常用!
  19. b站如何进行屏幕录制?录屏最值得尝试的几款软件
  20. 这是新技术时代来临,却始终都无法打开局面的“紧箍咒”

热门文章

  1. 文本框输入值文字消失常用的两种方法
  2. 使用Adaptive cards来构建Teams app的界面
  3. 如何做Teams Bot的测试覆盖
  4. keep-alive使用_如何使用Google Keep进行无忧笔记
  5. SpringBoot+Shiro学习(四):Realm授权
  6. 阿里云三维可视化使用初体验
  7. vue经验 - 细节小知识点汇总(更新中...)
  8. 计算机安全专家建议:尽快为电脑升级打补丁
  9. 理解云计算备份与灾难恢复
  10. 第10章-管理Hadoop集群-hadoop 安全模式相关知识点