【开篇】.NET开源 ORM 框架 SqlSugar 系列
.NET开源 ORM 框架 SqlSugar 系列
- 【开篇】.NET开源 ORM 框架 SqlSugar 系列
- 【入门必看】.NET开源 ORM 框架 SqlSugar 系列
- 【实体配置】.NET开源 ORM 框架 SqlSugar 系列
- 【Db First】.NET开源 ORM 框架 SqlSugar 系列
- 【Code First】.NET开源 ORM 框架 SqlSugar 系列
- 【数据事务】.NET开源 ORM 框架 SqlSugar 系列
- 【连接池】.NET开源 ORM 框架 SqlSugar 系列
- 【查询目录】.NET开源 ORM 框架 SqlSugar 系列
- 【查询基础】.NET开源 ORM 框架 SqlSugar 系列
01. 前言 ☘️
1.1 什么是ORM?
对象-关系映射(Object-Relational Mapping,简称ORM),面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。
1.2 为什么使用ORM?
当我们实现一个应用程序时(不使用O/R Mapping),我们可能会写特别多数据访问层的代码,从数据库保存、删除、读取对象信息,而这些代码都是重复的。而使用ORM则会大大减少重复性代码。对象关系映射(Object Relational Mapping,简称ORM),主要实现程序对象到关系数据库数据的映射。
1.3 主流的.NET ORM框架
-
SqlSugar:这是一个高性能、轻量级的ORM框架,适用于.NET平台。它支持SqlServer、MySql、PgSql和Oracle等多种数据库,具有灵活的数据迁移和查询功能,支持CodeFirst和DbFirst模式,适用于大数据自处理和多租户场景。
-
Dos.ORM:这是一个国内开发的ORM框架,支持动态列/表、分库/分表等功能。它经过多次迭代更新,支持多种数据库,适用于需要动态数据库操作的场景。
-
Chloe:这是一个轻量级的ORM库,查询接口类似于LINQ,支持通过lambda表达式进行数据操作。它适用于需要轻量级ORM解决方案的项目。
-
Entity Framework (EF):这是微软开发的重量级ORM框架,支持LINQ查询、更改跟踪和架构迁移。EF Core是其跨平台版本,适用于.NET Core项目。
-
NHibernate:这是一个成熟的ORM框架,适用于.NET平台。它支持灵活的映射和多种数据库,提供面向对象的查询语言(HQL)和LINQ查询,适用于复杂项目。
-
Dapper:这是一个高性能的微型ORM框架,适用于.NET平台。它通过扩展方法提供简洁的查询语法,适用于需要快速数据库操作的场景。
-
linq2db:这是一个基于LINQ的数据库访问库,提供简单、轻量、快速的类型安全层。它比微ORM更高一级,适用于需要LINQ表达式的项目。
-
ServiceStack.OrmLite:这是一个简单的快速类型化ORM框架,适用于需要快速开发的项目。
1.4 使用心得
上面几款我多多少少都用过,优缺点自不必多说,总有一款适合你。但感觉目前我用的最多的就是 SqlSugar 了,所以有必要搞个专栏一起学习学习。
02. 框架简介 🔥
SqlSugar 是一款 老牌 .NET开源ORM框架,由果糖大数据科技团队维护和更新 ,开箱即用最易上手的ORM。
优点 :【生态丰富】【高性能】【超简单】 【功能全面】 【多库兼容】【适合产品】
支持 : .net framework .net core3.1 .ne5 .net6 .net7 .net8 .net9
特色 : 拥有全球最活跃的ORM线上论坛,比EF还要活跃,交流群人数已超过万人 ,技术支持快,口碑好。
开源 :10年开源信誉值得信赖,从不搞收费,文档也全免费
功能目录
1. 真正可以实现零SQL的ORM 建表、索引和CRUD全部支持
2. 支持 .NET 百万级大数据写入、更新、分表和拥有几十亿查询统计成熟解决方案
3. 支持 SAAS 完整应用 :跨库查询 、审计、租户分库 、租户分表 和 租户数据隔离
4. 支持低代码+工作流 (动态建类 、动态建表、无实体多库兼容CRUD 、 JSON TO SQL 、自定义XML等)
5. 支持ValueObject、鉴别器、仓储、UnitOfWork、DbContext、AOP
6. 支持 DbFirst、CodeFirst和WebFirst 3种模式开发
7. 简单易用、功能齐全、高性能、轻量级、服务齐全、官网教程文档、有专业技术支持一天18小时服务
8. 完美支持AOT:多种数据库
03. 数据库支持 ✔️
EF Core的数据库驱动是不同公司开发,函数、建表标准不统一后期换库成本比较高
SqlSugar花了8年多时间完善中间标准真正的多库ORM,只需要改一下DbType就完成了切换数据库
关系型数据库 | MySql、SqlServer、Sqlite、Oracle 、 postgresql、达梦、 人大金仓(合作关系)、海量数据库Vastbase(合作关系)、神通数据库、瀚高、Access 、OceanBase、虚谷数据库、 MySqlConnector、华为 GaussDB 、南大通用gbase8s、MariaDB、Tidb、Odbc、Percona Server, Amazon Aurora、Azure Database for MySQL、PolarDB、 Google Cloud SQL for MySQL、kunDB、TDSQL、GoldenDB 、Doris 自定义数据库 |
适合分布式 | OceanBase 、Tidb、GaussDB |
时序数据库 | TDengine (支持群集,缺点不支持更新,语法比较弱支持的东西少) QuestDb(适合几十亿数据分析,模糊查询,适合单机,语法强大) |
列式存储库 | Clickhouse(适用于商业智能领域(BI),缺点大小写必须和库一样,不支持事务) |
即将上线 | Mongodb(mongodb.entities)延期24年9月 Sybase、hana、FireBird、InfluxDB litedb、 ElasticSearch |
04. 源码和安装 🔑
Github源码 | https://github.com/donet5/SqlSugar |
Gitee源码 | SqlSugar ORM: 🔥🔥🔥此ORM是一款创业神器【支持几十种数据库】+【只需一套代码】+【真正强类型零SQL超爽】+【低代码支持】+【建库和表】+【多租户】+【跨库】+【分表】+【MIT协议】 支持库有:MySql SqlServer Postgresql Oracle Sqlite ClickHouse GaussDB TDengine OceanBase OpenGauss Tidb 达梦、人大金仓等 |
开源生态 | .NET 主流开源项目案例 - SqlSugar 5x - .NET果糖网 |
Nuget | 安装 Nuget - SqlSugar 5x - .NET果糖网 |
AOT | SqlSugar AOT 教程 - SqlSugar 5x - .NET果糖网 |
05. 框架特色 ✅
5.1 超级简单
在不用任何设计模式,任何框架的情况下都可以拥有最佳体验,SqlSugar做到了保姆一样的服务,直接用不需要学习
的框架,各种默认值都是最佳配置,用到什么看一下文档便可。
5.2 产品必备
SqlSugar只需要一套代码就能支持几十个数据库,支持的Sql函数超100个,包括开窗函数、行转列等等
支持:多库建表 、多库修改表、多库索引、多库事务
支持:多库查询、跨库查询、多库共存、多库切换
客户评价:
5.3 超高性能
1、SqlSugar 可以生成理想的Sql脱颖而出,相反EF Core对生成的SQL的调整能力有限
2、SqlSugar 提供了大数据写入、大数据导航查询、大数据更新、大数据分表、大数据删除、大数据导入和验证等功能
3、SqlSugar 提供了与收费组件Dapper Plus相媲美的全部功能 ,而无需支付额外费用全部MIT协议
4、超高的基础性能,例如100万记条映射到List<T>比Dapper还快些
5.4 无限潜力
任何开源都离不开活跃的社区,社区越活跃未来发展将越好,目前SqlSugar 拥有.NET单个开源项目最活跃的社区之一
并且当天解决率为80%,开源界最勤劳的小蜜蜂 ,每天都在和用户互动,已经形成了良性循环
社区每天都有好的建议和需求推动着SqlSugar向更高的高度发展
5.5 超前理念
SqlSugar是一款来自未来的ORM,拥有超前的理念,需求领跑第一线,可以毫不夸张的说,在设计理念上就算不更新几年都不会过时,我们每天都会跟踪用户需求,将这些用户需求分类和整理,把有共性的功能都整理出来,经历过长达7年的努力,需求成负增长,已经走向了成熟和完善,是一款真正用了功能齐全的ORM框架,如果你用过EF CORE或者DAPPER肯定会为功能缺失而无奈,该有的功能没有,花里胡哨的一大堆。如果你用SqlSugar, 会给你一个不错的选择, 不断给你惊喜。
5.6 升级无忧
像EF你必须升级.NET版本才能使用最新的功能,而SqlSugar始终支持多个.NET版本
像EF 在 .net framework和.net core就是2套ORM,而SqlSugar始终一致,无需担心升级问题
SqlSugar对低版数据库支持友好,而EF对低版本数据库支持不友好