【开篇】.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对低版本数据库支持不友好
相关文章:

【开篇】.NET开源 ORM 框架 SqlSugar 系列
01. 前言 ☘️ 1.1 什么是ORM? 对象-关系映射(Object-Relational Mapping,简称ORM),面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对…...
参加面试被问到的面试题
1.在程序中如何开启事务? 在Java中,使用JDBC(Java Database Connectivity)与数据库交互时,你可以使用Connection对象的setAutoCommit方法来控制事务。默认情况下,autoCommit是开启的,这意味着每…...

第29天:安全开发-JS应用DOM树加密编码库断点调试逆向分析元素属性操作
时间轴: 演示案例: JS 原生开发-DOM 树-用户交互 DOM:文档操作对象 浏览器提供的一套专门用来操作网页代码内容的功能,实现自主或用户交互动作反馈 安全问题:本身的前端代码通过 DOM 技术实现代码的更新修改ÿ…...
react 的路由功能
1. 安装依赖 pnpm add react-router-dom 2. 基本的路由设置(BrowserRouter) 在 main.tsx 入口文件中使用BrowserRouter组件来包裹整个应用。它会监听浏览器的 URL 变化。 import { StrictMode } from "react";import { createRoot } from …...

SurfaceFlinger学习之一:概览
SurfaceFlinger 是 Android 系统中负责合成和显示屏幕内容的关键系统服务,它运行在一个专用的进程中 (system/bin/surfaceflinger)。它的主要职责是将不同应用程序的绘制内容(即窗口或表面)组合起来,通过硬件抽象层(HA…...

Qt关于窗口一直调用paintEvent的踩坑实录
首先看以下代码: void ItemBlockWidget::paintEvent(QPaintEvent *ev) {// 先调用父类的 paintEvent 以执行默认绘制行为QWidget::paintEvent(ev);qDebug()<<"ItemBlockWidget重绘";QStyleOption opt;opt.initFrom(this);QPainter p(this);style()…...
C++11: STL之bind
C11: STL之bind 引言可调用对象的绑定绑定普通函数绑定静态函数绑定类成员函数绑定仿函数绑定Lambda 占位符std::placeholders的应用嵌套绑定参数重排序结合 STL 算法占位符传递到嵌套函数混合占位符与默认值复杂占位符组合 std::bind的原理std::bind 的设计思路简化实现示例 B…...

在线音乐播放器 —— 测试报告
自动化脚本源代码:Java: 利用Java解题与实现部分功能及小项目的代码集合 - Gitee.com 目录 前言 一、项目简介 1.项目背景 2.应用技术 (1)后端开发 (2)前端开发 (3)数据库 二、项目功能…...
等保测评讲解:安全管理中心
在数字化转型的背景下,网络安全的重要性愈发凸显,而作为中国边疆大省的黑龙江,其网络安全建设更是不可忽视。等保测评,即信息安全等级保护测评,是确保信息系统安全的关键环节。本文将详细讲解黑龙江等保测评中的安全管…...
vue3表单输入相关修饰符使用
在 Vue 3 中,.lazy、.number 和 .trim 是用于 v-model 指令的修饰符,它们可以帮助你在双向绑定时进行特定的处理。 1. .lazy 修饰符 .lazy 修饰符表示只在 input 事件之后触发更新,即输入框的内容发生变化后,只有在用户**失去焦…...

CSS笔记(二)类名复用
这里我通过两张不同位置的卡片来实现效果 代码 <!DOCTYPE html> <html><head><style>/*设置画布*/body{/* 方便排列与对齐*/display: flex; /*画布布满整个窗口*/height: 100vh;/*水平居中*/justify-content: center;/*垂直居中*/align-items: cente…...

TCP三次握手与四次挥手(TCP重传机制,2MSL)超详细!!!计算机网络
本篇是关于3次握手和四次挥手的详细解释~ 如果对你有帮助,请点个免费的赞吧,谢谢汪。(点个关注也可以!) 如果以下内容需要补充和修改,请大家在评论区多多交流~。 目录 1. TCP头部: 2. 三次握手…...

LCR 006. 两数之和 II - 输入有序数组
一.题目: LCR 006. 两数之和 II - 输入有序数组 - 力扣(LeetCode) 二.我的原始解法-暴力解法超时: class Solution: def twoSum(self, numbers: List[int], target: int) -> List[int]: # 暴力解法 result [] for i in rang…...

网络安全在现代企业中的重要作用
网络安全是这个数字时代最令人担忧的事情之一。对技术的依赖性越来越强,使其同时面临多种网络威胁。其声誉和法律后果的大幅下降可能归因于一次妥协。 这使得良好的网络安全成为所有企业的选择和必需品。本文介绍了网络安全的重要性、企业中常见的网络威胁以及公司…...
关于 EKS Bottlerocket AMI 版本与 Karpenter 配置的说明
问题1: Bottlerocket AMI 版本问题 之前,后端团队发现在使用 Bottlerocket v1.26.2 AMI 版本时,存在某些问题。经过 Bottlerocket 团队调查,此行为是罕见的 race condition 导致的结果。 我们在环境中重现了此状况,并且关注到由于 kubelet device manager 的启动时间晚于 NVI…...

Python实现人生重开模拟器
目录 人生重开模拟器介绍 代码实现 打印初始界面 设置初始属性 设置角色性别 设置角色出生点 针对每一岁,生成人生经历 完整代码 人生重开模拟器介绍 人生重开模拟器 是之前比较火的一个小游戏,我们这里使用 Python 实现一个简化版的 人生重开模…...
java——Spring Boot的配置加载顺序和优先级
Spring Boot的配置加载顺序和优先级是确定应用程序如何读取和应用配置的关键。以下是对Spring Boot配置加载顺序和优先级的详细解释: 一、配置加载顺序 命令行参数: Spring Boot会首先加载命令行中指定的参数。这些参数可以通过在命令行中使用--keyval…...

【21-30期】Java技术深度剖析:从分库分表到微服务的核心问题解析
🚀 作者 :“码上有前” 🚀 文章简介 :Java 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 文章题目:Java技术深度剖析:从分库分表到微服务的核心问题解析 摘要: 本…...
CSS:怎么把网站都变成灰色
当大家看到全站的内容都变成了灰色,包括按钮、图片等等。这时候我们可能会好奇这是怎么做到的呢? 有人会以为所有的内容都统一换了一个 CSS 样式,图片也全换成灰色的了,按钮等样式也统一换成了灰色样式。但你想想这个成本也太高了…...

开发一个基于MACOS M1/2芯片的Android 12的模拟器
产品需求:MuMu模拟器Pro_率先适配Apple M系列芯片的安卓模拟器 苹果M芯片专属:产品专为苹果M系列芯片设计,意味着它需要能够充分利用M系列芯片的性能优势。 安卓模拟器:产品是一个安卓模拟器,允许用户在Mac设备上运行…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...

Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...

Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...