2022年了有哪些值得推荐的.NET ORM框架?

一.什么是ORM?

ORM 是 Object Relational Mapping 的缩写,译为“对象关系映射”,是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。它解决了对象和关系型数据库之间的数据交互问题,ORM的作用是在关系型数据库和业务实体对象之间作一个映射,这样我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。

二.如何选择合适自己的ORM框架?

对于我们而言选择ORM框架的目的其实都是为了让我们的程序更好的操作数据库,提高开发编程效率和程序的维护拓展性。因此我们在为自己负责的项目选择合适的ORM框架的时候需要从项目的业务场景出发,选择最适合自己团队的ORM框架(注意没有完美的框架,适合团队的才是最好的)。以下是一些比较好用且优秀的.NET-ORM框架汇总,排名不分先后可供大家参考学习(假如您有更好的.NET相关ORM推荐请在文末留言,谢谢)。

1.EF/EF Core

Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术,EF Core 是适用于 .NET 的现代对象数据库映射器。它支持 LINQ 查询、更改跟踪、更新和架构迁移。EF Core 通过提供程序插件 API 与 SQL Server、Azure SQL 数据库、SQLite、Azure Cosmos DB、MySQL、PostgreSQL 和其他数据库一起使用。(微软官方出品)。

EF Core 可用作对象关系映射程序 (O/RM),这可以实现以下两点:

  • 使 .NET 开发人员能够使用 .NET 对象处理数据库。
  • 无需再像通常那样编写大部分数据访问代码。

官方文档教程:https://docs.microsoft.com/zh-cn/ef/

GitHub地址:https://github.com/dotnet/efcore

以下是EF/EF Core相关拓展程序包:

2.Dapper

Dapper是一个简单的.NET对象映射器,在速度方面具有"King of Micro ORM"的头衔,几乎与使用原始的ADO.NET数据读取器一样快。ORM是一个对象关系映射器,它负责数据库和编程语言之间的映射。Dapper通过扩展IDbConnection提供一些有用的扩展方法去查询您的数据库。

主要特点:高性能、易排查、易运维、灵活可控。

GitHub地址:https://github.com/DapperLib/Dapper

以下是Dapper相关拓展程序包:

  • Dapper-Extensions - Dapper Extensions 是一个小型ORM库,通过为您的 POCO 添加基本的 CRUD 操作(获取、插入、更新、删除)来补充Dapper。对于更高级的查询场景,Dapper Extensions 提供了一个谓词系统。这个库的目标是通过不需要任何属性或基类继承来保持你的 POCO 纯净。
  • Dapper-FluentMap - Dapper的扩展。
  • Dommel - Dapper的CRUD操作。
  • https://docs.microsoft.com/zh-cn/ef/ - Dapper的CRUD操作。

3.FreeSql

FreeSql 是一款功能强大的对象关系映射(O/RM)组件,支持 .NET Core 2.1+、.NET Framework 4.0+ 以及 Xamarin。

主要特点:

  • 支持 CodeFirst 模式,即便使用 Access 数据库也支持数据迁移;

  • 支持 DbFirst 模式,支持从数据库导入实体类,或使用实体类生成工具生成实体类;

  • 支持 深入的类型映射,比如 PgSql 的数组类型等;

  • 支持 丰富的表达式函数,以及灵活的自定义解析;

  • 支持 导航属性一对多、多对多贪婪加载,以及延时加载;

  • 支持 读写分离、分表分库、过滤器、乐观锁、悲观锁;

  • 支持 MySql/SqlServer/PostgreSQL/Oracle/Sqlite/Firebird/达梦/人大金仓/神舟通用/南大通用/翰高/ClickHouse/Access 等数据库;

官方文档地址:http://www.freesql.net/

GitHub地址:https://github.com/dotnetcore/FreeSql

4.SqlSugar

SqlSugar是一款老牌 .NET 开源ORM框架,支持.NET CORE 和 MySql、SqlServer、Sqlite、Oracle 、 postgresql 、达梦、人大金仓 数据库,具有EF NH的功能,比EF更人性化的语法,支持真实的批量操作,另外还有媲美Dapper的性能。

主要特点:简单易用、功能齐全、高性能、轻量级、服务齐全、支持全自动分表组件,SAAS分库,大数据处理的ORM。

官网地址:http://www.donet5.com

GitHub地址:https://github.com/donet5/SqlSugar

5.Chloe

Chloe 是一个轻量级的对象/关系映射(ORM)库。查询接口类似于 LINQ。您可以使用 Chloe.ORM 通过 lambda 查询 LINQ 之类的数据并执行任何操作(加入查询 | 组查询 | 聚合查询 | 插入 | 批量更新 | 批量删除)。

文档地址:https ://github.com/shuxinqin/Chloe/wiki

GitHub地址:https://github.com/shuxinqin/Chloe

6.nhibernate-core 

 NHibernate 是一个成熟的开源对象关系映射器,适用于 .NET 框架。它被积极开发,功能齐全,并在数千个成功的项目中使用。

NHibernate社区网站 - https://nhibernate.info 

GitHub地址:http://www.freesql.net/

7.SmartSql

SmartSql = C# 中的 MyBatis + .NET Core+ 缓存(内存 | Redis)+ R/W 拆分 + PropertyChangedTrack +动态存储库 + InvokeSync + 诊断。

SmartSql 借鉴了 MyBatis 的思想,使用 XML 来管理 SQL ,并且提供了若干个筛选器标签来消除代码层面的各种 if/else 的判断分支。SmartSql将管理你的 SQL ,并且通过筛选标签来维护本来你在代码层面的各种条件判断,使你的代码更加优美。

主要特点:简洁、高效、高性能、扩展性、监控、渐进式开发!

文档地址:https://smartsql.net/guide/

GitHub地址:https://github.com/dotnetcore/SmartSql

8.PetaPoco

PetaPoco 是一个用于 .NET(4、4.5+、net standard 2.0+)和 Mono 的微型、快速、易于使用的 micro-ORM。由于 PetaPoco 所代表的简单性和易用性,它受到许多人的喜爱。PetaPoco 是首选的微 ORM,也是任何体面的开发人员工具包中必不可少的实用程序。

主要特点:

  • Dapper一样,它很快,因为它使用动态方法生成 (MSIL) 将列值分配给属性。
  • Massive一样,它现在也支持动态 Expandos。
  • ActiveRecord一样,它支持对象和数据库表之间的密切关系。
  • SubSonic一样,它支持使用 T4 模板生成 poco 类(仅限 V5)。
  • Massive一样,它以单个文件的形式提供,您可以轻松地将其添加到任何项目或编译(仅限 V5)。

文档地址:Discover .NET - PetaPoco

GitHub地址:https://github.com/CollaboratingPlatypus/PetaPoco 

9.linq2db

LINQ to DB 是最快的LINQ数据库访问库,在POCO对象和数据库之间提供了一个简单、轻量、快速且类型安全的层。
在架构上,它比 Dapper、Massive 或 PetaPoco 等微 ORM 高出一步,因为您使用 LINQ 表达式,而不是魔术字符串,同时在代码和数据库之间维护一个薄抽象层。您的查询由 C# 编译器检查并允许轻松重构。
但是,它不像 LINQ to SQL 或实体框架那么重。没有更改跟踪,因此您必须自己进行管理,但从积极的方面来说,您可以获得更多控制权并更快地访问您的数据。

文档地址:https://linq2db.github.io/ 

GitHub地址:GitHub - linq2db/linq2db: Linq to database provider.

10.RepoDb

 RepoDB 是一个开源的 .NET ORM 库,它弥补了微 ORM 和全 ORM 的差距。它可以帮助您在开发过程中简化何时使用 BASIC 和 ADVANCE 操作的切换。

主要特点:

  • 易于使用- 这些操作都作为您的 IDbConnection 对象的扩展方法实现。只要您的连接处于打开状态,就可以对您的数据库调用任何操作。
  • 高性能- 它缓存已经生成的编译表达式以供将来重用和执行。它了解您的架构以创建最佳的编译表达式 AOT。
  • 内存高效- 它提取并缓存您的对象属性、执行上下文、对象映射和 SQL 语句。它在整个转换和执行过程中重用它们。
  • 动态和混合- 它提供了成熟 ORM 的一些高级功能。它极大地帮助开发人员在开发过程中进行上下文切换时简化体验。
  • 开源软件——它是一个开源软件,并且永远是免费的。它旨在进一步改进 .NET 数据访问体验和解决方案,以及社区的集体思想。
  • 高质量- 它是一个高质量的微型 ORM,由 10K+ 真实单元和集成测试支持。它经过高度测试,并被生产环境中运行的各种关键系统使用。

GitHub地址:https://github.com/mikependon/RepoDB

11.ServiceStack.OrmLite

 OrmLite是一个快速、简单、类型化的.NET ORM,OrmLite 的目标是提供一个方便、DRY、无配置、与 RDBMS 无关的类型包装器,该包装器与 SQL 保持高度亲和性,公开直观的 API,生成可预测的 SQL 并干净地映射到断开连接和数据传输对象 (DTO) 友好、普通的旧C# 对象 (POCO)。这种方法更容易推理您的数据访问,从而清楚地知道什么 SQL 在什么时间执行,同时减轻意外行为、隐式 N+1 查询和重对象关系映射器 (ORM) 中普遍存在的泄漏数据访问。

文档地址:https://docs.servicestack.net/ormlite/

GitHub地址:https://github.com/ServiceStack/ServiceStack.OrmLite

12.SQLite-net

 简单、强大、跨平台的 SQLite 客户端和 .NET 的 ORM。

主要特点:

  • 非常容易与现有项目集成并在所有 .NET 平台上运行。

  • SQLite 上的瘦包装器,快速高效。(这个库不应该是您查询的性能瓶颈。)

  • 用于安全执行 CRUD 操作和查询(使用参数)并以强类型方式检索这些查询结果的非常简单的方法。

  • 与您的数据模型一起工作,而不会强迫您更改您的类。(包含一个小的反射驱动 ORM 层。)

GitHub地址:https://github.com/praeclarum/sqlite-net

13.Insight.Database

Insight.Database是一个用于 .NET 的快速、轻量级的 micro-orm。

GitHub地址:https://github.com/jonwagner/Insight.Database

14.cyqdata

 cyq.data是一个高性能且功能最强大的orm(支持.NET Core),支持Txt、Xml、Access、Sqlite、Mssql、Mysql、Oracle、Sybase、Postgres、DB2、Redis、MemCache。

GitHub地址:https://github.com/cyq1162/cyqdata

15.TinyORM

TinyORM是一个简单、快速且安全的微型.NET ORM。

Wiki地址:Home · sdrapkin/SecurityDriven.TinyORM Wiki · GitHub

GitHub地址:https://smartsql.net/guide/

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值