因为老板的一句话公司项目需要迁移到.Net Core ,但是以前同事用的ORM不支持.Net Core 开发过程也遇到了各种坑,插入条数多了也特别的慢,导致系统体验比较差好多都改写Sql实现。

所以我打算找一款

性能比较好

功能比较完善

方便以后可以切换数据库(经过我对老板的了解这个功能非常重要)

并且要有一定用户基础的ORM

参赛ORM

能够参赛的ORM必须要有以下个条件

第一、功能方面要比较完善

第二、Github需要有一定人气并且最近有更新

第三、支持多种数据库少写Sql,方便以后

筛选结果:

1、EF Core

2、Dapper+扩展

3、SqlSugar Core

4、Nhibernate Core

5、PetaPoco

第一轮淘汰赛  我们比 人气&功能

经过对这几个ORM的初步了解,对功能方面和人气方面进行了初步评分

1、EF Core     人气10,功能10

2、Dapper+扩展  人气10,功能9

3、SqlSugar Core  人气7,功能10

4、Nhibernate Core 人气7,功能10

5、PetaPoco 人气6,功能6

经过第一轮帅选,我淘淘汰了PetaPoco ORM

最重要的是这个ORM定位比较尴尬 ,功能一般并且扩展插件也比较稀少。现有功能以拼Sql为主满足不了我以后切换数据库的需求,第一轮淘态。

第一轮得分排名

1、EF Core 胜出

2、Dapper+扩展   胜出

3、SqlSugar Core  ,Nhibernate Core 胜出

4、PetaPoco 淘汰

第二轮淘汰赛 我们比易用性

写太牛逼的功能并不是我们所考虑的,需要上手快好用,于是我针对项目中几个需求点进行了上手测试,并给出了评分

1、EF Core  10   轻松满足

2、Dapper+扩展   8  需要找插件比较费时间

3、SqlSugar Core 10   轻松满足

4、Nhibernate Core  1 完全不会用

第二轮得分排名

1、EF Core,SqlSugar Core   胜出

2、Dapper+扩展   胜出

3、Nhibernate Core  淘汰

能够通过精心挑选并且进入前3名,相信这3个ORM都有他们独自的魅力

第三轮淘汰赛 我们比性能

经过对 批量插入、单条插入、批量更新、单条更新、条件查询、多选删除等几种常用场景的并发测试

我意外的发现SqlSugar性能比Dapper更加的优秀,EF Core垫底

第三轮得分排名

1、SqlSugar Core   胜出

2、Dapper+扩展   胜出

3、EF Core  淘汰

通过上面各种环节我们可以发现,我都会淘汰每场比赛表现最差者,因为我想找一个比较平衡的ORM用于项目,不想有短腿。

决赛 我们比大家的建议

目前Dapper+扩展和SqlSugar Core  这2个ORM是最适合我们的团队的,同事之间也各有说词,暂且平手吧。明天我们公司会在进行讨论。写个博文让大家给给建议,进行最终定夺。

下面是这2款ORM地址:

Dapper

https://github.com/StackExchange/Dapper

https://github.com/tmsmith/Dapper-Extensions

SqlSugar

https://github.com/sunkaixuan/SqlSugar

.Net Core ORM选择之路,哪个才适合你的更多相关文章

  1. .Net Core ORM选择之路,哪个才适合你 通用查询类封装之Mongodb篇 Snowflake(雪花算法)的JavaScript实现 【开发记录】如何在B/S项目中使用中国天气的实时天气功能 【开发记录】微信小游戏开发入门——俄罗斯方块

    .Net Core ORM选择之路,哪个才适合你   因为老板的一句话公司项目需要迁移到.Net Core ,但是以前同事用的ORM不支持.Net Core 开发过程也遇到了各种坑,插入条数多了也特别 ...

  2. NET Core微服务之路:实战SkyWalking+Exceptionless体验生产环境下的追踪系统

    前言 当一个APM或一个日志中心实际部署在生产环境中时,是有点力不从心的. 比如如下场景分析的问题: 从APM上说,知道某个节点出现异常,或延迟过过高,却不能及时知道日志反馈情况,总不可能去相应的节点 ...

  3. NET Core微服务之路:实战SkyWalking+Exceptionless体验生产下追踪系统

    原文:NET Core微服务之路:实战SkyWalking+Exceptionless体验生产下追踪系统 前言 当一个APM或一个日志中心实际部署在生产环境中时,是有点力不从心的. 比如如下场景分析的 ...

  4. 轮子来袭 vJine.Core Orm 之 02_代码生成

    1.下载并安装动软代码生成器: 2.下载vJine.Core.Orm模板: 3.解压模本文件并复制到如下的动软代码生成器模板目录: 4.打开动软代码生成器会看到模板已识别加载: 5.选择模板代码批量生 ...

  5. 轮子来袭 vJine.Core Orm 之 04_使用进阶

    1.配置文件: 框架默认情况下支持"connectionStrings"的配置方式,如<轮子来袭 vJine.Core Orm 之 01_快速入门>所述: 框架的进阶设 ...

  6. 轮子来袭 vJine.Core Orm 之 01_快速体验

    vJine.Core 是.Net环境下C#类库,在其包含的众多功能中ORM功能尤为突出,现简介如下. 一.支持的数据库: SQLite, MySQL, MS SQL, Oracle. 二.使用方法: ...

  7. 轮子来袭 vJine.Core Orm 之 03_架构分析

    1.vJine.Core ORM 架构: 如上图所示,vJine.Core ORM的特点如下: 所有操作均以DataManager为核心: DataManager业务部分的增删改查操作依赖于Class ...

  8. NET Core & VS Code 之路(2) Web API

    NET Core & VS Code 之路(2) Web API 开发Core项目的条件 Visual Studio 2015 Update 3 .NET Core 1.0.0 - VS 20 ...

  9. .NET Core微服务之路:文章系列和内容索引汇总 (v0.52)

    微服务架构,对于从事JAVA架构的童鞋来说,早已不是什么新鲜的事儿,他们有鼎鼎大名的Spring Cloud这样的全家桶框架支撑,包含微服务核心组件如 1. Eureka:实现服务注册与发现. 2. ...

随机推荐

  1. 《T-SQL查询》读书笔记Part 2.执行计划

    一.关于执行计划 执行计划是优化器生成的用于确定如何处理一个给定查询的“工作计划”.一个计划包含一组运算符,通常按照特定的顺序来应用这些运算符.此外,一些运算符可以在它们之前的运算符还在处理时被应用( ...

  2. RN 开发常见小问题

    1 定时器每隔多少秒调用一次 直接贴代码  可复制使用 componentWillUnmount() { this.timer && clearInterval(this.timer) ...

  3. js 数据加载loading封装

    <!-- 模态框(Modal) --> <div class="modal fade" id="qst_loading" tabindex=& ...

  4. python发送手机动态验证码

    一.准备短信发送平台 首先进入http://user.ihuyi.com/nav/sms.html互亿天线,并且注册,进入首页 注册后会免费送50条消息 注册完后进入验证码通知短信,复制自己的api接 ...

  5. 关于CSS定位属性 position 的使用

    CSS中一般通过浮动和定位来对标签进行位置操作.下面我们来讨论一下定位的用法和需要注意的地方. 1.首先,说一下position的几个属性值 (1)none属性值,这个是定义不进行定位,默认为不定位, ...

  6. 【bzoj 3601】一个人的数论 (莫比乌斯反演+伯努利数)

    题解: (吐槽:网上题解那个不严谨猜测真是没谁了……关键是还猜得辣么准……) 直接化简到求和那一段: $f_{d}(n)=\sum_{t|n}\mu(t)t^{d}\sum_{i=1}^{\frac{ ...

  7. [Usaco2015 Jan]Grass Cownoisseur 图论 tarjan spfa

    先缩点,对于缩点后的DAG,正反跑spfa,枚举每条边进行翻转即可 #include<cstdio> #include<cstring> #include<iostrea ...

  8. BZOJ_2058_[Usaco2010 Nov]Cow Photographs_逆序对

    BZOJ_2058_[Usaco2010 Nov]Cow Photographs_逆序对 题意: 奶牛的图片 Farmer John希望给他的N(1<=N<=100,000)只奶牛拍照片, ...

  9. BZOJ_1858_[Scoi2010]序列操作_线段树

    BZOJ_1858_[Scoi2010]序列操作_线段树 Description lxhgww最近收到了一个01序列,序列里面包含了n个数,这些数要么是0,要么是1,现在对于这个序列有五种变换操作和询 ...

  10. React从入门到放弃之前奏(5):ReactRouter4

    概念 安装:npm i -S react-router react-router-dom GitHub:ReactTraining/react-router React Router中有三种类型的组件 ...