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. 齐博x1标签实例:做模板组图单图无图混排的处理

    代码如下, {qb:tag name="xxx" type="cms" rows="10"} {if ( count($rs['picurl ...

  2. ISCTF2022WP

    ISCTF2022改名叫套CTF吧(bushi),博主菜鸡一个,套题太多,挑一些题写下wp,勿喷. MISC 可爱的emoji   下载下来是个加密压缩包,根据hint掩码爆破密码 得到密码:KEYI ...

  3. 使用WSL2连接USB设备

    目录 要求 安装 第一步 在Window安装usbipd 第二步 在WSL里安装USBIP 工具和硬件数据库 使用方法 22.3.19 微软官方文档:连接 USB 设备 | Microsoft Doc ...

  4. CF620E New Year Tree(树形+dfs序+线段树+状态压缩)

    题目链接 题目大意 \(~~\)给出一棵 nn 个节点的树,根节点为 11.每个节点上有一种颜色 c\(_{i}\) 和m 次操作.操作有两种: \(~~~~\) 1. 1\(~\)u\(~\)c:将 ...

  5. ClickHouse(10)ClickHouse合并树MergeTree家族表引擎之ReplacingMergeTree详细解析

    目录 建表语法 数据处理策略 资料分享 参考文章 MergeTree拥有主键,但是它的主键却没有唯一键的约束.这意味着即便多行数据的主键相同,它们还是能够被正常写入.在某些使用场合,用户并不希望数据表 ...

  6. php统一的gocheck方法

    这半个月断断续续在学习用PHP的ThinkPHP框架开发后端API.现在总结记录一下开发一个接口需要做好哪些事,以此提高开发效率,并且也有不错的扩展性. 一.流程概要 基本是这么一个流程,略过环境搭建 ...

  7. EdgeCore初学习

    ### 前提 初学edgeCore,有不足之处,欢迎指正 ### 大纲 1. 日志查看2. 重启3. 在线编译4. sftp同步代码5. 整体架构6. 通信协议7. 模拟实现(待实现) ### 步骤 ...

  8. 线性时间选择(含平均情况O(n)和最坏情况O(n)算法)

    前言 本篇文章我将介绍 期望为线性时间 的选择算法和 最坏情况为线性时间 的选择算法,即分别为 平均情况下时间复杂度为O(n) 和 最坏情况下时间复杂度为O(n) 的线性时间选择.以下包含了我自己的全 ...

  9. 深入浅出学习透析Nginx服务器的基本原理和配置指南「Keepalive性能分析实战篇」

    Linux系统:Centos 7 x64 Nginx版本:1.11.5 Nginx 是一款面向性能设计的 HTTP 服务器,能反向代理 HTTP,HTTPS 和邮件相关(SMTP,POP3,IMAP) ...

  10. 命令查询职责分离 - CQRS

    概念 CQRS是一种与领域驱动设计和事件溯源相关的架构模式, 它的全称是Command Query Responsibility Segregation, 又叫命令查询职责分离, Greg Young ...