乐趣区

关于.net:2020年-NET-ORM-完整比较助力选择

.NET ORM 前言

为什么要写这篇文章?

心愿针对 SEO 优化搜索引擎,让更多中国人晓得并且应用。目前百度搜寻 .NET ORM 全是 sqlsugar,我集体是无语的,每每一个人进群第一件事就是拿来比拟,每天要反复答复、反复解答、压服他们。想压服标签是名气大、使用者多的同类型 .NET ORM 十分艰难,最多只能让他们勉强承受。FreeSql 不愿做本人发光的金子,心愿在 2020 年 写下这篇残缺一点的 .NET ORM 比拟,为筹备应用 FreeSql 的敌人解惑,能排上百度搜索引擎当然再好不过了。

肯请正在应用 CSRedisCore、FreeSql 的敌人,动一动手指转发本文,并加上原文链接指向本文,谢谢!QQ 群:4336577(已满)、8578575(在线)、52508226(在线)

原创文章欢送转载,2020 年中文版 .NET ORM 残缺性能比拟

MarkDown:https://files.cnblogs.com/fil…

文章连贯:https://www.cnblogs.com/kelly…

.NET ORM 根底信息比拟

性能项 FreeSql EFCore SqlSugar
出世工夫 2018 年 12 月 2015 年 (约) 2014 年 (约)
开源协定 MIT Apache-2.0 Apache-2.0
所属机构 dotnetcore(NCC) dotnet sunkaixuan(集体)
单元测试数量 5500+ 很多
github star 2.1k+ 9.5k+ 3.1k+
github issues 沉闷 沉闷 不沉闷
反对平台 .NET4.0+、.NETCore .NETCore .NET4.5+、.NETCore
反对数据库 很多,并且行为统一 很多 SqlServer/MySql/Sqlite/Oracle
生命周期 Singleton Scoped Scoped
应用形式 IFreeSql、Repository DbContext SugarClient

FreeSql .NET ORM 反对 MySql/SqlServer/PostgreSQL/Oracle/Sqlite/Firebird/ 达梦 / 人大金仓 / 神舟通用 /Access。

.NET ORM 各有自已看家本领,本文次要按 FreeSql 提供的性能进行列举比拟,如有触犯请见谅,也欢送向 FreeSql 提出性能倡议。

每个性能实现的深度档次不一样(比方 EFCore 反对 SqlServer 2012,FreeSql 反对 SqlServer 2005),很难彻底比拟,提醒:

  • 本文比拟的性能 FreeSql 每种数据库根本都有提供,不像 EFCore 偏差 SqlServer
  • 本文只比拟官网提供的性能(不蕴含第三方扩大)

.NET ORM 整体性能比拟

性能项 FreeSql EFCore SqlSugar
.NET ORM CodeFirst 依据实体类型,创立表构造
.NET ORM CodeFirst 依据实体类型,比照表构造
.NET ORM CodeFirst 依据实体类型正文,迁徙表构造备注
.NET ORM CodeFirst FluentApi
.NET ORM CodeFirst FluentApi 语法兼容 EFCore
.NET ORM CodeFirst 实体个性兼容 EFCore
.NET ORM CodeFirst 自定义实体个性 (Aop)
.NET ORM CodeFirst 类型转换映射 (MapType)
.NET ORM DbFirst 依据数据库,生成实体类
.NET ORM 导航属性 (OneToOne)
.NET ORM 导航属性 (ManyToOne)
.NET ORM 导航属性 (OneToMany)
.NET ORM 导航属性 (ManyToMany)
.NET ORM 导航属性 (Parent) 父子关系的实体类
.NET ORM 导航属性延时加载、贪心加载、级联保留
.NET ORM 自定义表达式树解析
.NET ORM 全局过滤器
.NET ORM 事务
.NET ORM 读写拆散
.NET ORM 分表分库
.NET ORM 仓储 Repository
.NET ORM 工作单元 UnitOfWork
.NET ORM 工作单元管理器 UnitOfWorkManager
.NET ORM DbContext 状态治理

.NET ORM CRUD 性能比拟

性能项 FreeSql EFCore SqlSugar
.NET ORM CRUD 时,映射动静表名
.NET ORM CRUD 时,应用参数化 SQL 执行
.NET ORM CRUD 时,不应用参数化 SQL 执行 (NoneParameter)
.NET ORM CRUD 时,获取对应的 SQL(ToSql)
.NET ORM CRUD 时,对立审计实体属性值 (Aop.AuditValue)
.NET ORM 插入 (单条)
.NET ORM 插入时,疏忽 / 指定列
.NET ORM 插入时,返回影响的行数
.NET ORM 插入时,返回插入后的自增值
.NET ORM 插入时,返回插入后的记录
.NET ORM 插入时,Insert Ignore Into
.NET ORM 插入时,On Duplicate Key Update
.NET ORM 插入时,On Conflict Do Update
.NET ORM 批量插入 性能测试后果参考文档
.NET ORM 批量插入时,主动分批 参考文档
.NET ORM 批量插入时,应用 BulkCopy
.NET ORM 更新 (单条)
.NET ORM 更新时,动静条件 (WhereDynamic)
.NET ORM 更新时,依据实体对象更新
.NET ORM 更新时,依据状态治理只更新有变动的属性
.NET ORM 更新时,疏忽 / 指定列
.NET ORM 更新时,原子性 set num=num+1
.NET ORM 更新时,指定条件
.NET ORM 更新时,主动附加全局过滤器条件
.NET ORM 更新时,不须要先查问
.NET ORM 更新时,应用乐观行锁
.NET ORM 更新时,应用乐观锁
.NET ORM 更新时,返回影响的行数
.NET ORM 更新时,返回插入后的记录
.NET ORM 批量更新
.NET ORM 删除 (单条)
.NET ORM 删除时,动静条件 (WhereDynamic)
.NET ORM 删除时,指定条件
.NET ORM 删除时,主动附加全局过滤器条件
.NET ORM 删除时,不须要先查问
.NET ORM 删除时,返回影响的行数
.NET ORM 删除时,返回插入后的记录
.NET ORM 级联保留
.NET ORM 增加或更新
.NET ORM 增加或更新,主动适配 merge into 参考文档
.NET ORM 批量编辑保留 参考文档
.NET ORM 查问 (单条)
.NET ORM 查问时,分页
.NET ORM 查问时,分页反对 SqlServer2008
.NET ORM 查问时,动静条件 (WhereDynamic)
.NET ORM 查问时,动静过滤条件 (WhereDynamicFilter) 参考文档
.NET ORM 查问时,主动附加全局过滤器条件
.NET ORM 查问时,多表条件流传 (WhereCascade)
.NET ORM 查问时,在 lambda 中应用导航属性
.NET ORM 查问时,用 Dto 映射只须要查问的字段
.NET ORM 查问时,传 Sql 作二次查问 (WithSql)
.NET ORM 查问时,子查问 (Exists)
.NET ORM 查问时,子查问 (In)
.NET ORM 查问时,子查问拼接后果 (string.Join) 参考文档
.NET ORM 查问时,应用分组聚合 (GroupBy/Having)
.NET ORM 查问时,应用 Linq To Sql 语法
.NET ORM 查问时,针对树形构造表 父子关系的实体类

.NET ORM 总结

.NET ORM FreeSql 功能强大,扩大不便,从 issues 和 qq 群 能够看得出社区更新极积有问必应;

.NET ORM EFCore 次要是面向对象操作,许多形式不符合中国人习惯,长期更新(但不敌对兼容);

.NET ORM SqlSugar 历史问题多,并且 issues 和 qq 群 曾经根本不解决问题;


.NET ORM FreeSql 作者的致力心愿能感动到你,肯请正在应用的、凶恶的您能动一动小手指,把文章转发一下,让更多人晓得 .NET 有这样一个好用的 ORM 存在。谢谢了!!

.NET ORM FreeSql 开源协定 MIT https://github.com/dotnetcore/FreeSql,能够商用,文档齐全。QQ 群:4336577(已满)、8578575(在线)、52508226(在线)

如果你有好的 ORM 实现想法,欢送给作者留言探讨,谢谢观看!

退出移动版