企业应用架构研究系列十三:整合EFCore&Dapper 通用ORM框架EFDapper
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的更多相关文章
- 企业应用架构研究系列二十八:身份认证 Beginning Out With IdentityServer4
在.Netcore 技术栈中,一直在使用了开源组件IdentityService4进行身份管理,其功能的强大和易用性的确很受开发者喜欢,但是最近其开源组织Duende Software 开始对其进行商 ...
- 企业应用架构研究系列二:MSF&Scrum 项目管理
从业软件项目这么多年,在企业应用开发项目中,项目能否成功,是否能按照项目计划有效的推进,是有很强的一套项目管理理论.最早的时候,接触的项目管理的方法论就是微软的MSF(Microsoft Soluti ...
- 企业应用架构研究系列十九:Docker开发环境
软件行业流行这样一个说法,由于Docker 技术的成熟和该技术被广大厂商的普遍应用,成就了微服务领域的快速成长,衍生了云原生技术和公有云的进一步推广.我个人认为Dockers 技术.微服务技术.云原生 ...
- 企业应用架构研究系列二十七:Vue3.0 之环境的搭建与Vue Antd Admin探索
开发前端需要准备一些开发工具,这些工具怎么安装就不详细描写了,度娘一些很多很多.主要把核心的开发工具列表一些,这些资源也是非常容易找到和安装的. Node 安装:https://nodejs.org/ ...
- 企业应用架构研究系列二十六:信号量SemaphoreSlim与Semaphore
在进行多线程程序的开发和设计的过程中,不可避免的需要引入semaphore信号量这个组件,这是.net框架提供的一个对多线程计数互斥的方案,就是允许指定的线程个数访问特定的资源而增加的 一个" ...
- ABP架构学习系列四:集成Dapper
之前,一直想集成Dapper到项目中,但是一直没成功,今天把abp升级到最新版,然后按教程来,就可以了,呵呵 现在,基于上一篇的源码进行升级和集成dapper,将abp升级到3.8.2 官方 ...
- hisql ORM 框架研究(国内第一个支持HANA的ORM框架)
HiSql 操作说明文档 V1.0 下一代ORM框架 国内第一个支持HANA的ORM框架 hisql源码下载 git clone https://github.com/tansar/HiSql.git ...
- 企业架构研究总结(36)——TOGAF企业连续体和工具之企业连续体构成及架构划分
又回头看了之前文章的评论,本人也同样感慨这些文章的确像政治课本般的虚无缥缈,所以对费力看完却觉得无从下手的看官致以诚挚的歉意和理解,因为这个问题也同样困扰着笔者本人,而我能做的也只能是纸上谈兵.之前也 ...
- 企业架构研究总结(39)——TOGAF架构能力框架之架构委员会和架构合规性
3. 架构委员会 正如前面所说,一个用来对架构治理策略的实现进行监督的跨组织的架构委员会是架构治理策略成功的主要要素之一.架构委员会应该能够代表所有主要干系人的需求,并且通常还需要对整个架构的审查及维 ...
- 企业架构研究总结(38)——TOGAF架构能力框架之架构能力建设和架构治理
为了确保架构功能在企业中能够被成功地运用,企业需要通过建立适当的组织结构.流程.角色.责任和技能来实现其自身的企业架构能力,而这也正是TOGAF的架构能力框架(Architecture Capabil ...
随机推荐
- pta第二次博客
目录 pta第二次博客 1.前言 2.设计与分析 第四次作业第一题 第四次作业第一题 第四次作业第一题 第四次作业第一题 pta第二次博客 1.前言 2.设计与分析 第四次作业第一题 1.题目: &q ...
- etcd定时任务脚本执行失败
etcd定时任务脚本执行失败 报错如下:etcdctl命令不存在 是因为在脚本中etcdctl命令没有写绝对路径,修改标记部分改成绝对路径 可以先获取路径然后改成绝对路径问题解决 which etcd ...
- go基础语法50问,来看看你的go基础合格了吗?
目录 1.使用值为 nil 的 slice.map会发生啥 2.访问 map 中的 key,需要注意啥 3.string 类型的值可以修改吗 4.switch 中如何强制执行下一个 case 代码块 ...
- JS 学习笔记(一)常用的字符串去重方法
要求:从输入框中输入一串字符,按回车后输出去重后的字符串 方法一: <body> <input type="text" id="input" ...
- 洛谷P5309 Ynoi 2011 初始化 题解
题面. 我也想过根号分治,但是题目刷得少,数组不敢开,所以还是看题解做的. 这道题目要用到根号分治的思想,可以看看这道题目和我的题解. 题目要求处理一个数组a,支持如下操作. 对一个整数x,对数组长度 ...
- 【CVE-2022-0543】Redis Lua沙盒绕过命令执行复现
免责声明: 本文章仅供学习和研究使用,严禁使用该文章内容对互联网其他应用进行非法操作,若将其用于非法目的,所造成的后果由您自行承担,产生的一切风险与本文作者无关,如继续阅读该文章即表明您默认遵守该内容 ...
- 2022春每日一题:Day 37
题目:[USACO14FEB]Auto-complete S 字典树套路题,字典树优化剪枝,加个cnt标记即可 代码: #include <cstdio> #include <cst ...
- yum的$releaser与$basearch
最近配置centos 的yum 源时,想要配置一个通配的yum源,注意到发行的网络yum源的url地址中通常有两个变量 https://vault.centos.org/$releaser/cloud ...
- i春秋象棋
这是一道非常有意思的一道题,打开后就是一个pve的象棋游戏,我觉得下赢了就应该会出现flag,可惜多次尝试后失败了(果真有点厉害,我一时兴起就玩了好几把,有空试试拿更厉害的电脑跟他对下,如果赢了会怎么 ...
- i春秋who are you
打开题目网页,抓包,查源码都一无所获,然后就去看cookie,发现一个role变量,刚开始也不知道这个变量是什么,其值也是没有规律的一串字符串.看了别人源码才知道这是base64加密后的字符串,将其用 ...