EntityFrameworkCore是微软官网提供的ORM框架,是轻量化、可扩展、开源和跨平台的数据访问技术框架,但是在.Net 开发圈的评论却褒贬不一。很多人认为EFCore 执行的效能比较差,很多复杂的查询场景很难实现,也有很多人认为,EFCore 开发简单,在中小型项目中,能够快速的实现业务逻辑。

  

  我个人认为,EFCore一直在不断的升级,社区反馈的问题也在逐一的去努力解决,EFCore应该是一个可以信任,可以在项目中放心使用的框架。特别是EFCore7.0出来后,提供的对JSON的支持,让我更加确信EFCore是一个优秀的ORM框架。我对其的一些优秀的功能进行总结:(1)首先,EFCore 的对象模型管理还是非常严谨,基本上将对象的关系和数据库的表的关系管理的非常到位,保证数据的纯净,并且可以进行连带的统一移除,这点是非常不错的;(2)其次,EFCore 提供了数据的变更管理,通过Migration工具将对象的变更和数据库的变更高效的进行了自动化的管理,特别是在产品软件开发过程中,提供了一键式部署提供了非常方便的支持。(3)EFCore 的对Linq 的支持力度是非常大的,能够快速的进行应用程序的开发。(4)EFCore 的后续版本对异步操作和性能提升方面,也做了很大的升级,(5)特别是EFCore7 版本支持了JSON功能,这个是对一些灵活的动态属性或者子表可以简化了数据库的变更,更好的适应非结构化数据存储。(6)种子数据的管理,方便产品型软件在程序首次启动时候,初始化一些原始的配置数据。…… 其实还有很多优秀的功能,我本次也不在熬述。

  但EFCore 目前在一些查询和特殊的SQL语句的执行过程中,支持的不是特别好,性能也不是特别优秀。这个时候,我们需要引入另外一个ORM插件,Dapper,号称性能之王的ORM框架,在性能方面的确是非常非常优秀,功能也是很强大,支持的生态圈也是很丰富的。而且在.Net 开发圈内是非常受欢迎的。在这里,也不在介绍Dapper的优秀功能,可以参考官网:https://dapper-tutorial.net ,官网说明的非常清楚而且很详细。

  当在进行全新软件架构选型数据处理层插件的时候,很让我头疼,是选择EFCore 还是Dapper 呢?经过一番折腾,我觉得两个插件其实是可以互相弥补彼此不足,发扬插件彼此的优秀能力,将两个插件高效融合在一起。基于这个思路,我开发了一个新的结合体数据访问层框架EFDapper,本着最简设计思路,在DbContext上面进行功能绑定,如下图,我们就可以将Dapper的 高效的查询功能和EFCore 进行了高效融合了。

  

  EFDapper 的使用是非常简单,就是EFCore 的功能和Dapper 的功能的合体,通过EFCore 的DbContext 的上下文,获取数据库连接信息,然后就可以扩展到Dapper 功能框架了,完美的结合了两个数据访问层框架。

  

  目前EFDapper 框架还没有开发成熟,后续计划在两框架之间,可以开发一些优秀功能,也希望EFCore 和Dapper 框架越来越优秀。

企业应用架构研究系列十三:整合EFCore&Dapper 通用ORM框架EFDapper的更多相关文章

  1. 企业应用架构研究系列二十八:身份认证 Beginning Out With IdentityServer4

    在.Netcore 技术栈中,一直在使用了开源组件IdentityService4进行身份管理,其功能的强大和易用性的确很受开发者喜欢,但是最近其开源组织Duende Software 开始对其进行商 ...

  2. 企业应用架构研究系列二:MSF&Scrum 项目管理

    从业软件项目这么多年,在企业应用开发项目中,项目能否成功,是否能按照项目计划有效的推进,是有很强的一套项目管理理论.最早的时候,接触的项目管理的方法论就是微软的MSF(Microsoft Soluti ...

  3. 企业应用架构研究系列十九:Docker开发环境

    软件行业流行这样一个说法,由于Docker 技术的成熟和该技术被广大厂商的普遍应用,成就了微服务领域的快速成长,衍生了云原生技术和公有云的进一步推广.我个人认为Dockers 技术.微服务技术.云原生 ...

  4. 企业应用架构研究系列二十七:Vue3.0 之环境的搭建与Vue Antd Admin探索

    开发前端需要准备一些开发工具,这些工具怎么安装就不详细描写了,度娘一些很多很多.主要把核心的开发工具列表一些,这些资源也是非常容易找到和安装的. Node 安装:https://nodejs.org/ ...

  5. 企业应用架构研究系列二十六:信号量SemaphoreSlim与Semaphore

    在进行多线程程序的开发和设计的过程中,不可避免的需要引入semaphore信号量这个组件,这是.net框架提供的一个对多线程计数互斥的方案,就是允许指定的线程个数访问特定的资源而增加的 一个" ...

  6. ABP架构学习系列四:集成Dapper

    之前,一直想集成Dapper到项目中,但是一直没成功,今天把abp升级到最新版,然后按教程来,就可以了,呵呵    现在,基于上一篇的源码进行升级和集成dapper,将abp升级到3.8.2   官方 ...

  7. hisql ORM 框架研究(国内第一个支持HANA的ORM框架)

    HiSql 操作说明文档 V1.0 下一代ORM框架 国内第一个支持HANA的ORM框架 hisql源码下载 git clone https://github.com/tansar/HiSql.git ...

  8. 企业架构研究总结(36)——TOGAF企业连续体和工具之企业连续体构成及架构划分

    又回头看了之前文章的评论,本人也同样感慨这些文章的确像政治课本般的虚无缥缈,所以对费力看完却觉得无从下手的看官致以诚挚的歉意和理解,因为这个问题也同样困扰着笔者本人,而我能做的也只能是纸上谈兵.之前也 ...

  9. 企业架构研究总结(39)——TOGAF架构能力框架之架构委员会和架构合规性

    3. 架构委员会 正如前面所说,一个用来对架构治理策略的实现进行监督的跨组织的架构委员会是架构治理策略成功的主要要素之一.架构委员会应该能够代表所有主要干系人的需求,并且通常还需要对整个架构的审查及维 ...

  10. 企业架构研究总结(38)——TOGAF架构能力框架之架构能力建设和架构治理

    为了确保架构功能在企业中能够被成功地运用,企业需要通过建立适当的组织结构.流程.角色.责任和技能来实现其自身的企业架构能力,而这也正是TOGAF的架构能力框架(Architecture Capabil ...

随机推荐

  1. 2022NISACTF--WEB

    easyssrf 打开题目,显示的是 尝试输入, 发现输入flag有东西 读取文件 访问下一个网站 读取文件 不能以file开头 直接伪协议,base64解码 checkIn 奇怪的unicode编码 ...

  2. ubuntu基本

    ubuntu使用过程中遇到的指令 apt-get更新 当现出net-tools没有可安装候选 的提示时,可能是apt-get需要更新了.通过指令sudo apt install net-tools p ...

  3. 微信小程序canvas 证件照制作

    小程序制作证件照过程 利用canvas制作生活中常用的证件照,压缩图片,修改图片dpi.希望给大家带来方便. 证件照小程序制作要点 上传合适的图片,方便制作证件照 调用AI接口,将图像进行人像分割.这 ...

  4. 思维分析逻辑 3 DAY

    目录 指标分析 指标选择原则 指标体系建立 步骤 流量分析 渠道分析(从哪来) 常见渠道及渠道分类 渠道推广过程 渠道的指标 渠道分析方法 转化及价值分析(经过什么?产生什么价值?) 漏斗分析 功能模 ...

  5. 轻量级领域驱动设计DDD Lite在嵌入式系统重构中的应用

    前言 目前,关于领域驱动设计(Domain Driven Design)DDD的培训,材料,视频都比较多,大家对DDD的一些概念都有所了解,但是在实际使用过程中,有很多的问题.例如 为什么DDD的架构 ...

  6. SpringBoot使用@Async的总结!

    一些业务场景我们需要使用多线程异步执行任务,加快任务执行速度. 之前有写过一篇文章叫做: 异步编程利器:CompletableFuture 在实际工作中也更加推荐使用CompletableFuture ...

  7. vulnhub靶场之DIGITALWORLD.LOCAL: SNAKEOIL

    准备: 攻击机:虚拟机kali.本机win10. 靶机:DIGITALWORLD.LOCAL: SNAKEOIL,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://down ...

  8. 关于python路径的问题思考

    我相信你肯定遇到过这样的报错 Traceback (most recent call last): File "main.py", line 549, in <module& ...

  9. oracle 分析函数——ration_to_report 求占有率(百分比)

    oracle 的分析函数有很多,但是这个函数总是会忘记,我想通过这种方式能让自己记起来,不至于下次还要百度. 创表.表数据(平时练手的表): prompt PL/SQL Developer impor ...

  10. Springboot整合thymeleaf报错whitelabel page

    1.SpringBootApplication未放在最外层 2.application.properties未配置spring.thymeleaf.check-template-location=tr ...