惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
The Last Watchdog
The Last Watchdog
Security Latest
Security Latest
P
Privacy International News Feed
T
Threat Research - Cisco Blogs
H
Help Net Security
T
The Exploit Database - CXSecurity.com
Know Your Adversary
Know Your Adversary
博客园_首页
S
Securelist
S
Schneier on Security
G
GRAHAM CLULEY
Cisco Talos Blog
Cisco Talos Blog
V
Visual Studio Blog
博客园 - 叶小钗
C
Cybersecurity and Infrastructure Security Agency CISA
有赞技术团队
有赞技术团队
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
Stack Overflow Blog
Stack Overflow Blog
量子位
L
Lohrmann on Cybersecurity
Hugging Face - Blog
Hugging Face - Blog
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
A
Arctic Wolf
P
Privacy & Cybersecurity Law Blog
Simon Willison's Weblog
Simon Willison's Weblog
S
SegmentFault 最新的问题
The Hacker News
The Hacker News
罗磊的独立博客
博客园 - 司徒正美
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园 - 【当耐特】
Microsoft Security Blog
Microsoft Security Blog
K
Kaspersky official blog
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
L
LINUX DO - 热门话题
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
V
V2EX
V
Vulnerabilities – Threatpost
AWS News Blog
AWS News Blog
小众软件
小众软件
Project Zero
Project Zero

博客园 - 我才是银古

第16章:常见问题、排错与最佳实践 第15章:扩展生态、MCAD 与外部集成 第12章:实战案例:机械结构与 3D 打印零件 第14章:构建、测试、调试与贡献流程 第13章:OpenSCAD 源码架构与核心执行流程 第11章:预览、渲染、网格精度与性能优化 第09章:列表推导、递归与算法建模 第08章:参数化零件库与复用设计 第10章:导入导出、命令行与自动化 第06章:CSG 布尔建模方法 第07章:二维图形、拉伸、旋转与投影 第05章:基础几何、坐标系与变换 第04章:参数、变量、函数、模块与作用域 OpenSCAD 教程目录 第03章:OpenSCAD 语言基础 第02章:安装、环境配置与开发工作流 第01章:OpenSCAD 项目全景与学习路线 第02章:源码获取、编译与开发环境配置 第01章:OCCT项目全景与学习路线 第18章:二次开发实战与综合案例 第18章:综合实战案例 第17章:数据交换与协同 第16章:源码架构与二次开发 第15章:插件与自定义工作台开发 第14章:Python脚本宏与自动化 第13章:FEM仿真分析 第12章:CAM数控加工 第11章:SurfaceMesh与逆向工程 第10章:Draft二维绘图与BIM建筑 第09章:工程图TechDraw 第07章:参数化表达式与Spreadsheet 第08章:装配设计Assembly 第06章:Part工作台与几何内核 第05章:PartDesign实体特征建模 第04章:草图Sketcher约束建模 第02章:安装版本与工作环境配置 第03章:界面工作台与基础操作 第01章:项目全景与学习路线 第十二章:插件开发、研究功能与最佳实践 第十章:定时任务与自动化(Cron) 第七章:技能、记忆与自学习闭环 第八章:MCP 集成与上下文文件 第六章:工具系统与终端后端 第五章:模型供应商与配置体系 Hermes Agent 教程目录 第十一章:语音、视觉、浏览器与子代理协作 第四章:CLI/TUI 与会话管理 第十二章:学习路线、实战方案与最佳实践 第十一章:源码结构、开发调试与插件开发 第十章:自动化、远程访问、日志与排障 第九章:Control UI、节点、Canvas 与语音能力 第七章:工具、技能、插件与能力扩展 第八章:安全模型、访问控制与沙箱实践 第六章:Agent 工作区、会话与多智能体路由 第五章:多通道消息接入与聊天平台配置 第四章:配置体系、模型接入与认证管理 第三章:Gateway 架构、协议与运行机制 第二章:安装、环境准备与快速上手 第一章:OpenClaw 项目概览与核心定位 oh-my-openagent 教程目录 09-命令模型回退与配置参考 10-实战案例最佳实践与故障排除 05-工作模式-Ultrawork-Prometheus-Atlas 08-Hooks与MCP系统 06-Category与Skill系统 07-核心工具链 04-智能体全景详解 03-安装与环境配置 02-整体架构与多模型编排机制 01-项目简介与核心理念 01-项目概览与学习路线 02-安装部署与工具适配 03-Skill机制与using-superpowers 05-TDD系统化调试与完成前验证 04-需求澄清方案设计与计划编写 07-并行智能体子智能体与Git-Worktree 第六章:代码审查、反馈处理与分支收尾 08-中国特色Skills与本土团队落地 09-MCP构建工作流执行与自定义Skill 第23章:FreeCAD-Python-API Clipper2 C# 源码解读教程 第19章:PolyTree 多边形树结构 第20章:实际应用与最佳实践 第18章:Minkowski 和与差 第17章:RectClip 矩形裁剪优化 第16章:ClipperOffset 偏移类详解 第15章:填充规则详解 第14章:布尔运算执行流程 第13章:ClipperD 浮点裁剪类 第11章:OutRec 与 OutPt 输出结构 第9章:Active 活动边结构 第10章:Vertex 顶点与 LocalMinima 局部极小值 第12章:Clipper64 裁剪类详解 第7章:高精度运算与128位整数 第8章:ClipperBase 基类详解 第5章:枚举类型与常量定义 第6章:InternalClipper 内部工具类 第2章:核心数据结构 - Point64、PointD 第3章:路径与多边形表示 - Path64、PathD、Paths64、PathsD 第4章:矩形边界 - Rect64、RectD
第一章:SqlSugar 简介与快速入门
我才是银古 · 2026-06-21 · via 博客园 - 我才是银古

第一章:SqlSugar 简介与快速入门

目录

  1. 什么是SqlSugar
  2. SqlSugar的发展历程
  3. 核心特性与优势
  4. 适用场景分析
  5. 与其他ORM框架对比
  6. 第一个SqlSugar程序
  7. 社区与生态资源

1. 什么是SqlSugar

1.1 SqlSugar简介

SqlSugar是一个功能强大、易用且高性能的 .NET ORM(对象关系映射)框架,由中国开发者创建并维护,专为简化.NET平台的数据库访问而设计。SqlSugar的核心理念是"让数据访问更简单、更高效、更优雅",通过丰富的API和强大的功能,帮助开发者快速构建高质量的数据访问层。

SqlSugar采用 Apache-2.0 开源许可证发布,开发者可以免费用于商业项目。框架托管在GitHub和Gitee平台上:

1.2 SqlSugar的命名含义

SqlSugar(SQL糖)这个名称富有深意:

  • SQL:代表结构化查询语言,是数据库操作的基础
  • Sugar:意为"语法糖",即通过优雅简洁的API让SQL操作更甜蜜、更易用

正如其名,SqlSugar就是要为.NET开发者提供最甜蜜的数据访问体验。

1.3 核心定位

SqlSugar的核心定位可以概括为:

定位 说明
轻量级ORM 不是重型框架,核心库体积小,性能优异
全功能框架 提供CRUD、事务、分页、多表联查等完整功能
多数据库支持 支持MySQL、SQL Server、PostgreSQL、Oracle、SQLite等数十种数据库
开发加速器 减少重复代码,大幅提升开发效率
企业级方案 支持分表分库、多租户、分布式事务等企业特性

2. SqlSugar的发展历程

2.1 版本演进时间线

SqlSugar自诞生以来,经历了多个重要的版本迭代:

版本 发布时间 重要特性
1.x 2015年 项目初期,基础CRUD功能
2.x 2016年 增加多数据库支持
3.x 2017年 引入CodeFirst和DbFirst
4.x 2018-2019年 性能大幅优化,增加分表功能
5.x 2020-至今 支持.NET Core/.NET 5+,增加多租户、分布式事务等企业特性

2.2 里程碑事件

  • 2015年:SqlSugar项目启动,在CodePlex平台开源
  • 2016年:迁移到GitHub,开始支持多数据库
  • 2017年:社区用户突破1万+
  • 2018年:性能优化,达到并超越Dapper性能水平
  • 2019年:引入分表分库功能,支持大数据量场景
  • 2020年:全面支持.NET Core 3.1和.NET 5
  • 2021-2023年:持续优化,支持.NET 6/7/8,增加更多数据库支持
  • 2024年至今:支持.NET 9,持续优化和完善

2.3 社区发展

SqlSugar拥有中国最活跃的.NET ORM社区之一:

  • GitHub Star数:15,000+
  • Gitee Star数:5,000+
  • NuGet下载量:数百万次
  • 开发者社区:活跃的QQ群、微信群、论坛

3. 核心特性与优势

3.1 零SQL开发

SqlSugar支持完全零SQL开发,通过Lambda表达式和链式API实现所有数据库操作:

// 查询示例 - 无需编写SQL
var users = db.Queryable<User>()
    .Where(u => u.Age > 18 && u.Status == 1)
    .OrderBy(u => u.CreateTime, OrderByType.Desc)
    .ToList();

3.2 多数据库支持

SqlSugar支持数十种主流和国产数据库,切换数据库只需修改DbType配置:

主流数据库

  • SQL Server (2005-2022)
  • MySQL (5.x/8.x)
  • PostgreSQL
  • Oracle
  • SQLite

国产数据库

  • 达梦(DM)
  • 人大金仓(KingbaseES)
  • 神通(Oscar)
  • 南大通用(GBase)
  • 瀚高(HighGo)

大数据/时序数据库

  • ClickHouse
  • TDengine
  • MongoDB

云数据库

  • OceanBase
  • PolarDB
  • TiDB

3.3 高性能设计

SqlSugar在性能方面做了大量优化:

性能特性 说明
表达式树编译 使用表达式树动态编译,避免反射性能损耗
对象池技术 复用对象,减少GC压力
批量操作 支持高效的批量插入、更新、删除
异步支持 全面支持async/await异步编程
一级缓存 智能缓存,减少数据库访问

性能对比(相对值):

  • 查询性能:与Dapper相当,优于EF Core 30-50%
  • 批量插入:10万条数据仅需2-3秒
  • 复杂查询:比EF Core快50%+

3.4 CodeFirst与DbFirst双支持

CodeFirst(代码优先)

// 定义实体类
public class User
{
    [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

// 自动创建表
db.CodeFirst.InitTables<User>();

DbFirst(数据库优先)

// 根据现有数据库生成实体类
db.DbFirst.CreateClassFile("c:\\Demo\\Models");

3.5 分表分库支持

SqlSugar提供原生的分表分库支持,适用于大数据量场景:

// 按年份分表
[SplitTable(SplitType.Year)]
[SugarTable("Order_{year}")]
public class Order
{
    public int Id { get; set; }
    public DateTime CreateTime { get; set; }
    public decimal Amount { get; set; }
}

// 自动路由到正确的分表
var orders = db.Queryable<Order>()
    .Where(o => o.CreateTime >= DateTime.Parse("2023-01-01"))
    .ToList();

3.6 多租户架构

内置多租户支持,轻松实现SaaS应用:

// 配置租户数据库
var tenant = new SqlSugarScope(new ConnectionConfig[]
{
    new ConnectionConfig{ ConfigId="tenant1", DbType=DbType.MySql, ConnectionString="..." },
    new ConnectionConfig{ ConfigId="tenant2", DbType=DbType.MySql, ConnectionString="..." }
});

// 根据租户ID切换数据库
var db = tenant.GetConnection("tenant1");

3.7 强大的AOP功能

SqlSugar提供丰富的AOP拦截点,方便实现日志、审计、性能监控等功能:

db.Aop.OnLogExecuting = (sql, pars) =>
{
    Console.WriteLine($"SQL: {sql}");
    Console.WriteLine($"参数: {db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value))}");
};

db.Aop.OnError = (exp) =>
{
    Console.WriteLine($"错误: {exp.Message}");
};

4. 适用场景分析

4.1 最适合的场景

SqlSugar特别适合以下开发场景:

场景 原因
快速原型开发 API简洁,学习成本低,可快速构建原型
中小型项目 功能全面,无需引入多个组件
多数据库项目 切换数据库极其方便,一套代码多数据库运行
大数据量项目 支持分表分库,性能优异
SaaS多租户系统 内置多租户支持
微服务架构 轻量级,适合在微服务中使用
遗留系统重构 可以与现有代码共存,逐步替换

4.2 不太适合的场景

以下场景可能需要考虑其他方案:

  • 复杂的领域驱动设计(DDD):如果需要复杂的聚合根、值对象等DDD概念,EF Core可能更合适
  • 需要强类型的数据库迁移:EF Core的Migration功能更强大
  • 需要复杂的继承映射:EF Core在继承映射方面支持更好

4.3 实际应用案例

SqlSugar已被众多企业和项目采用:

  • 电商平台:某大型电商平台使用SqlSugar处理千万级订单数据
  • 物联网系统:某物联网平台使用SqlSugar存储海量传感器数据
  • 政务系统:多个政府项目使用SqlSugar,支持国产数据库
  • 金融系统:某金融公司使用SqlSugar的分布式事务功能
  • SaaS平台:多个SaaS产品使用SqlSugar的多租户功能

5. 与其他ORM框架对比

5.1 SqlSugar vs EF Core

对比项 SqlSugar EF Core
学习曲线 平缓,API简单直观 较陡,概念较多
性能 优秀,接近Dapper 良好,但较SqlSugar慢
数据库支持 30+种,包括国产数据库 主流数据库
分表分库 原生支持 需第三方库
代码优先 支持,简单直观 支持,功能强大
迁移功能 基础支持 强大的Migration
多租户 原生支持 需自行实现
DDD支持 基础支持 更完善

选择建议

  • 追求性能、需要多数据库支持 → SqlSugar
  • 需要复杂的领域模型、强类型迁移 → EF Core

5.2 SqlSugar vs Dapper

对比项 SqlSugar Dapper
学习曲线 中等 平缓
性能 与Dapper相当 极佳
功能完整性 完整的ORM功能 轻量级Micro-ORM
查询构建 链式Lambda表达式 需手写SQL
多表联查 支持,无需写SQL 需手写SQL
代码量 较多(需写SQL)
类型安全 完全类型安全 基本类型安全

选择建议

  • 需要完整ORM功能、追求开发效率 → SqlSugar
  • 极致追求性能、喜欢写SQL → Dapper

5.3 SqlSugar vs FreeSql

对比项 SqlSugar FreeSql
诞生时间 2015年 2019年
成熟度 非常成熟 较新但发展快
文档质量 完善 完善
社区活跃度 非常活跃 活跃
功能特性 非常丰富 丰富
API风格 简洁直观 功能丰富

两者都是优秀的.NET ORM框架,选择主要看个人偏好和项目需求。


6. 第一个SqlSugar程序

6.1 安装SqlSugar

通过NuGet安装SqlSugar:

# .NET CLI
dotnet add package SqlSugar

# Package Manager Console
Install-Package SqlSugar

根据使用的数据库,可能还需要安装对应的数据库驱动:

# MySQL
dotnet add package MySqlConnector

# SQL Server - 通常.NET已包含

# PostgreSQL
dotnet add package Npgsql

# Oracle
dotnet add package Oracle.ManagedDataAccess.Core

# SQLite
dotnet add package System.Data.SQLite.Core

6.2 创建第一个控制台程序

创建一个简单的控制台应用程序:

using SqlSugar;
using System;

namespace SqlSugarDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 创建数据库连接
            SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
            {
                ConnectionString = "server=localhost;database=testdb;uid=root;pwd=123456;",
                DbType = DbType.MySql,
                IsAutoCloseConnection = true,
                InitKeyType = InitKeyType.Attribute
            });

            // 2. 定义实体类
            // 见下方User类定义

            // 3. 创建表(CodeFirst)
            db.CodeFirst.InitTables(typeof(User));

            // 4. 插入数据
            db.Insertable(new User
            {
                Name = "张三",
                Age = 25,
                Email = "zhangsan@example.com"
            }).ExecuteCommand();

            // 5. 查询数据
            var users = db.Queryable<User>().ToList();

            // 6. 输出结果
            foreach (var user in users)
            {
                Console.WriteLine($"ID: {user.Id}, Name: {user.Name}, Age: {user.Age}");
            }
        }
    }

    // 实体类定义
    public class User
    {
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
        public int Id { get; set; }

        [SugarColumn(Length = 50)]
        public string Name { get; set; }

        public int Age { get; set; }

        [SugarColumn(Length = 100)]
        public string Email { get; set; }
    }
}

6.3 代码说明

1. 创建数据库连接

SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
    ConnectionString = "连接字符串",
    DbType = DbType.MySql,  // 数据库类型
    IsAutoCloseConnection = true,  // 自动关闭连接
    InitKeyType = InitKeyType.Attribute  // 使用特性初始化
});

2. 定义实体类
使用特性标注实体类和属性:

  • [SugarColumn(IsPrimaryKey = true)]:标识主键
  • [SugarColumn(IsIdentity = true)]:标识自增
  • [SugarColumn(Length = 50)]:指定字段长度

3. 创建表

db.CodeFirst.InitTables(typeof(User));

4. 基本操作

  • 插入:db.Insertable(entity).ExecuteCommand()
  • 查询:db.Queryable<T>().ToList()
  • 更新:db.Updateable(entity).ExecuteCommand()
  • 删除:db.Deleteable<T>().Where(...).ExecuteCommand()

6.4 运行程序

编译并运行程序:

dotnet run

输出结果:

ID: 1, Name: 张三, Age: 25

7. 社区与生态资源

7.1 官方资源

资源 链接 说明
官方网站 https://www.donet5.com 完整文档和教程
GitHub仓库 https://github.com/DotNetNext/SqlSugar 源代码、Issue、PR
Gitee镜像 https://gitee.com/dotnetchina/SqlSugar 国内访问更快
NuGet包 https://www.nuget.org/packages/SqlSugar 下载安装包

7.2 学习资源

官方文档

  • 入门教程:https://www.donet5.com/Home/Doc
  • API参考:详细的API文档
  • 视频教程:B站有多个视频教程
  • 示例代码:GitHub仓库中的Examples目录

社区文章

  • CSDN、博客园有大量实战文章
  • SegmentFault、掘金也有很多教程
  • 公众号文章和技术博客

视频教程

  • B站搜索"SqlSugar教程"
  • 作者录制的官方教程
  • 社区开发者分享的实战视频

7.3 社区支持

交流群组

  • QQ群:多个技术交流群
  • 微信群:开发者交流群
  • GitHub Discussions:英文交流
  • Gitee Issues:中文问题讨论

技术支持

  • GitHub Issues:Bug报告和功能请求
  • Gitee Issues:中文问题反馈
  • Stack Overflow:标签sqlsugar
  • 官方论坛:开发者论坛

7.4 贡献指南

如果你想为SqlSugar做贡献:

  1. 报告Bug:在GitHub/Gitee提Issue
  2. 提交PR:Fork仓库,修改后提交Pull Request
  3. 完善文档:帮助改进文档
  4. 分享经验:写文章、录视频分享使用经验

7.5 商业支持

SqlSugar提供商业技术支持服务:

  • 技术咨询
  • 定制开发
  • 培训服务
  • VIP技术支持

本章小结

本章我们全面了解了SqlSugar框架:

  1. SqlSugar是什么:一个高性能、易用的.NET ORM框架
  2. 发展历程:从2015年至今,持续发展和完善
  3. 核心特性:零SQL开发、多数据库支持、高性能、分表分库等
  4. 适用场景:适合各种规模的项目,尤其是多数据库和大数据量场景
  5. 对比分析:相比EF Core、Dapper各有优势
  6. 快速上手:通过第一个程序了解基本用法
  7. 社区资源:丰富的文档、教程和社区支持

在下一章,我们将详细学习如何在实际项目中配置和集成SqlSugar。


延伸阅读


练习题

  1. 在本地创建一个控制台应用程序,安装SqlSugar并连接到MySQL/SQL Server数据库
  2. 定义一个Product实体类,包含Id、Name、Price、Stock等属性
  3. 使用CodeFirst创建Product表
  4. 实现基本的CRUD操作:插入3个产品、查询所有产品、更新一个产品价格、删除一个产品
  5. 思考:SqlSugar与你之前使用的ORM框架有什么不同?

下一章:第二章:环境配置与项目集成