• .Net Core ORM选择之路,哪个才适合你


    因为老板的一句话公司项目需要迁移到.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

  • 相关阅读:
    Docker基操—2.MySQL镜像
    Linux基操—13.修改PATH
    nginx关于访问自定义路径php页面问题
    Linux基操—20.制逻辑卷
    Linux装配—18.yum方式安装各类服务
    spring boot实现AOP,Filter,Interceptor以及3个之间的区别和使用场景
    linux内核研究笔记(一) page介绍
    总结一下遇到过的网络同步IO导致服务阻塞的问题
    Chaos网络库(二) Buffer的设计
    Chaos网络库(三) 主循环及异步消息的实现
  • 原文地址:https://www.cnblogs.com/kuangliwen/p/10210638.html
Copyright © 2020-2023  润新知