深入浅出 SQLSugar:快速掌握高效 .NET ORM 框架

作者:q***251日期:2025/11/16

SQLSugar 是一个高效、易用的 .NET ORM 框架,支持多种数据库(如 SQL Server、MySQL、PostgreSQL 等)。它提供了丰富的功能,包括 CRUD 操作、事务管理、动态表名、多表联查等,开发者可以通过简单的链式操作实现复杂的数据库逻辑。

本文将以完整的示例,详细介绍 SQLSugar 的安装、配置和功能使用,适用于 .NET Framework 和 .NET Core 项目。

一、SQLSugar简介

1. 什么是 SQLSugar?

SQLSugar 是一个轻量级的开源 ORM 框架,专注于以下核心功能:

  • 简单易用: 通过链式操作简化常见数据库操作。
  • 高性能: 优化底层 SQL 执行效率。
  • 多数据库支持: 兼容 SQL Server、MySQL、SQLite、PostgreSQL、Oracle 等。
  • 功能全面: 支持事务、动态表名、分页、多表联查等高级特性。
2. 使用场景

SQLSugar 适用于以下场景:

  1. 中小型项目: 快速开发数据库交互模块。
  2. 动态表结构管理: 需要动态生成或切换表。
  3. 性能要求高的场景: 适合对 SQL 性能优化有需求的开发者。

二、SQLSugar 的安装

SQLSugar 提供统一的 NuGet 包,无论是 .NET Framework 还是 .NET Core 项目,都直接使用 SqlSugar。

1. 在 .NET Framework 4.6+ 环境安装 SqlSugar
  • 使用 NuGet 包管理器安装
    打开 Visual Studio,在项目中右键选择“管理 NuGet 程序包”,搜索 SqlSugar 并安装。
    注意事项:确保您的项目使用 .NET Framework 4.6 或更高版本,并在 App.config 或 Web.config 文件中正确配置数据库连接字符串。
  • 使用 Package Manager Console 安装
    在 Visual Studio 的工具菜单中打开 Package Manager Console,输入以下命令:
1Install-Package SqlSugar  
  • 使用 .NET CLI 安装
    在命令行中运行:
1dotnet add package SqlSugar  

注意: 即使您使用 .NET CLI 安装,SqlSugar 包也完全兼容 .NET Framework 4.6+ 环境。

2. 在 .NET Core 和 .NET 5/6/7/8/9 环境安装 SqlSugarCore

对于基于 .NET Core 和 .NET 5+(包括 .NET 6/7/8/9)的项目,应安装专门的 SqlSugarCore 包。

  • 使用 NuGet 包管理器安装
    打开 Visual Studio,在项目中右键选择“管理 NuGet 程序包”,搜索 SqlSugarCore并安装。
  • 使用 Package Manager Console 安装
    在 Visual Studio 的工具菜单中打开 Package Manager Console,输入以下命令:
1Install-Package SqlSugarCore  
  • 使用 .NET CLI 安装
    在命令行中运行:
1dotnet add package SqlSugarCore  

注意事项:

  • SqlSugarCore 是专门为 .NET Core 和 .NET 5/6/7/8/9 构建的轻量级包。
  • 确保项目的运行时环境与目标框架一致。

三、SQLSugar 的基本使用教程

1. 数据库上下文配置

创建数据库上下文类
在 SQLSugar 中,通过 SqlSugarClient 管理与数据库的连接。以下示例展示如何创建一个简单的 DbContext 类:

1using SqlSugar;
2
3public class DbContext
4{
5    public SqlSugarClient Db { get; }
6
7    public DbContext()
8    {
9        Db = new SqlSugarClient(new ConnectionConfig()
10        {
11            ConnectionString = "Server=localhost;Database=TestDB;User Id=sa;Password=your_password;",
12            DbType = DbType.SqlServer, // 数据库类型
13            IsAutoCloseConnection = true, // 自动关闭连接
14            InitKeyType = InitKeyType.Attribute // 从实体类的特性初始化表结构
15        });
16
17        // 打印SQL到控制台(仅在调试时使用)
18        Db.Aop.OnLogExecuting = (sql, pars) =>
19        {
20            Console.WriteLine($"SQL: {sql}");
21        };
22    }
23}
24
2. 实体类定义

SQLSugar 支持通过特性映射数据库表和字段。以下示例定义了一个简单的用户表实体类:

1using SqlSugar;
2
3[SugarTable("Users")] // 指定数据库表名为 "Users"
4public class User
5{
6    [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] // 主键且自增
7    public int Id { get; set; }
8
9    public string Name { get; set; }
10
11    public int Age { get; set; }
12}
13
3. 数据库基本操作

以下是使用 SQLSugar 进行增删改查的示例:

插入数据

1var db = new DbContext().Db;
2
3// 插入单条记录
4var user = new User { Name = "Alice", Age = 25 };
5db.Insertable(user).ExecuteCommand();
6
7// 插入多条记录
8var users = new List<User>
9{
10    new User { Name = "Bob", Age = 30 },
11    new User { Name = "Charlie", Age = 28 }
12};
13db.Insertable(users).ExecuteCommand();
14

查询数据

1// 查询单条记录
2var user = db.Queryable<User>().First(u => u.Id == 1);
3
4// 条件查询多条记录
5var users = db.Queryable<User>().Where(u => u.Age > 20).ToList();
6
7// 动态条件查询
8int ageFilter = 25;
9var filteredUsers = db.Queryable<User>()
10                      .WhereIF(ageFilter > 0, u => u.Age > ageFilter)
11                      .ToList();
12

更新数据

1// 更新单条记录
2var user = new User { Id = 1, Name = "Alice Updated", Age = 26 };
3db.Updateable(user).ExecuteCommand();
4
5// 条件更新
6db.Updateable<User>()
7  .SetColumns(u => u.Age == u.Age + 1)
8  .Where(u => u.Age < 30)
9  .ExecuteCommand();
10

删除数据

1// 按主键删除
2db.Deleteable<User>().In(1).ExecuteCommand();
3
4// 条件删除
5db.Deleteable<User>().Where(u => u.Age > 50).ExecuteCommand();
6
4. 高级功能

事务管理
SQLSugar 提供了简单的事务管理功能,适合多操作的场景:

1var db = new DbContext().Db;
2db.Ado.UseTran(() =>
3{
4    db.Insertable(new User { Name = "Transaction Test", Age = 20 }).ExecuteCommand();
5    db.Updateable<User>().SetColumns(u => u.Age == 30).Where(u => u.Name == "Transaction Test").ExecuteCommand();
6});
7

动态表名
通过 AS 方法可以动态指定表名:

1var tableName = "Users_2024";
2var users = db.Queryable<User>().AS(tableName).ToList();
3

分页查询
SQLSugar 提供了便捷的分页查询方法:

1int totalCount;
2var pagedUsers = db.Queryable<User>()
3                   .OrderBy(u => u.Id)
4                   .ToPageList(1, 10, out totalCount); // 第1页,每页10条
5Console.WriteLine($"Total Count: {totalCount}");
6

四、总结

1. 优点
  • 易用性: 链式操作降低了开发复杂度。
  • 性能优化: 支持多数据库,底层 SQL 执行效率高。
  • 功能齐全: 事务管理、动态表名、多表联查等功能一应俱全。
  • 跨平台支持: 兼容 .NET Framework 和 .NET Core。
2. 使用建议

SQLSugar 非常适合以下场景:

  1. 快速开发: 适用于中小型项目,降低了数据库操作门槛。
  2. 复杂查询优化: 在需要动态查询或表名动态化的场景下表现出色。
  3. 多数据库项目: 支持多种主流数据库的无缝切换。

深入浅出 SQLSugar:快速掌握高效 .NET ORM 框架》 是转载文章,点击查看原文


相关推荐


vscode编译C语言 | 在VSCode中配置编译环境与常见问题解决
epvikz_0732025/11/15

三十岁学编程|从零开始,如何在30岁起步学编程并成功转行许多人认为编程是年轻人的事情,尤其是到了三十岁,很多人会觉得自己已经错过了最佳学习的时机。然而,实际上三十岁学编程并非不可能,反而可能是一个崭新的开始。在这个信息化时代,编程能力已成为许多行业的基本技能,很多人通过自学编程成功转行,获得了新的职业发展机会。首先,学编程最重要的就是坚持和耐心。虽然编程看起来有些抽象,但通过系统的学习和实践,任何人都可以掌握基本的编程技能。比如,掌握Python或JavaScript等基础语言,它们不仅有着强大


用Microsoft Visual Studio Installer Projects 2022打包程序,同时安装VC++的运行库等
CE贝多芬2025/11/13

目录 一、安装插件 二、创建打包程序 在解决方案中新建打包项目 三、配置打包属性内容等 文件系统的各个文件夹 将输出程序打包进Application Folder 创建桌面快捷方式 创建卸载程序 给快捷方式创建图标 设置打包时的属性以及安装语言,安装位置等信息 四、打包 五、附录 六、附录二 一、安装插件 说明: Microsoft Visual Studio Installer Projects 2022 是微软官方提供的 Visual Studio


高德MCP服务接入
QD.Joker2025/11/12

创建一个agent,集成高德MCP工具 文章目录 一、安装依赖二、获取高德key三、代码实现 一、安装依赖 pip install openai pip install langchain (1.0版本以上) pip install langchain_mcp_adapters 二、获取高德key https://lbs.amap.com/api/mcp-server/create-project-and-key 三、代码实现 import asynci


XC7A200T-2FBG676I Xilinx AMD Artix-7 FPGA
XINVRY-FPGA2025/11/10

XC7A200T-2FBG676I 是 赛灵思 Xilinx AMD 推出的高性能低功耗 FPGA,隶属于 Artix-7 系列。该芯片基于 28nm 低功耗硅工艺,采用可扩展的 7 系架构,旨在在性能、功耗和成本之间实现最佳平衡。它主要面向高速数据采集、视频处理、通信系统、工业控制与嵌入式硬件加速等场合,适合那些需要较高逻辑容量和中高速信号处理能力的系统。 该芯片拥有约 215,360 个逻辑单元,包含约 33,650 个查找表(LUT)等效逻辑模块,内部集成大容量片上存储资源,总片上


Socket编程实战:从基础API到多线程服务器
violet-lz2025/11/8

一、Socket编程概述:网络通信的桥梁 Socket(套接字)是网络通信的端点,它提供了不同主机间进程通信的接口。在Linux系统中,Socket可以被视为一种特殊的文件描述符,通过标准的文件I/O操作来进行网络数据传输。 Socket编程的核心概念         通信域:确定通信的协议族和地址格式         套接字类型:定义通信的语义和特性         协议:指定具体的传输协议         地址:标识网络中的通信端点 学习Socket编程的重要性:      


Python编程实战 · 基础入门篇 | 列表(list)
程序员爱钓鱼2025/11/6

在 Python 中,列表(list) 是最常用、最灵活的数据结构之一。 它能存放多个数据,可以增删改查,还能嵌套其他列表,是编程中处理“集合类信息”的核心工具。 本章我们将系统学习列表的定义、操作方法、常用函数与实战应用。 一、什么是列表 列表(list)是一个 有序、可变 的元素集合。 它可以存储任意类型的数据,包括数字、字符串、布尔值、甚至其他列表。 示例: numbers = [1, 2, 3, 4, 5] fruits = ["apple", "banana", "cherry"]


Python 的内置函数 float
IMPYLH2025/11/1

Python 内建函数列表 > Python 的内置函数 float Python 的内置函数 float() 是一个用于将数字或字符串转换为浮点数(即带有小数部分的数字)的函数。它是 Python 中处理数值转换的重要工具之一,常用于数据类型转换和数值计算场景。 功能说明 无参数调用:当不带任何参数调用时,float() 会返回 0.0 print(float()) # 输出: 0.0 数字转换: 整数转换为浮点数print(float(5)) # 输出: 5.0 布尔


【操作系统】计算机系统概述
.笑对人生.2025/10/30

目录 一、操作系统的基本概念 (一)操作系统的概念 (二)操作系统的功能和目标 (三)操作系统的特征 二、操作系统发展历程 (一)手工操作阶段(此阶段无操作系统) (二)批处理阶段(操作系统开始出现) (三)分时操作系统 (四)实时操作系统 (五)网络操作系统和分布式计算机系统 (六)个人计算机操作系统 三、操作系统的运行环境 (一)处理器运行模式 (二)中断和异常的概念 (三)系统调用 (四)操作系统运行环境的切换 四、操作系统结构 五、操作系统引导


搭建虚拟机完全分布式(centos)
小鹿学程序2025/10/27

在搭建完全分布式集群前,通常需要先在一台基础节点(可作为主节点或模板节点) 上完成基础环境配置,后续再通过克隆或批量操作同步到其他节点。以下是详细的实操步骤(以 CentOS 7 为例,其他 Linux 发行版操作类似): 一、准备工作 操作系统:确保基础节点已安装好 Linux 系统(推荐 CentOS 7/8、Ubuntu 20.04 等),并配置好静态 IP(避免 IP 动态变化影响集群通信)。 查看 IP:ip addr 配置静态 IP(CentOS 7):编辑 /etc/syscon


系统权限与信息收集:从CPU架构到后渗透实战的完整技术体系
PyHaVolask2025/10/24

文章目录 前言系统权限体系Windows权限层级权限等级划分各权限特点详解权限实战应用 Linux权限体系权限结构权限查看 虚拟机环境配置 CPU保护环机制Ring架构概述Ring 0(内核态)Ring 3(用户态)硬件黑客技术BadUSB攻击USB Killer(烧鹅)高级侧信道攻击 漏洞编号体系Microsoft漏洞编号(MS)CVE漏洞编号CNNVD漏洞编号漏洞研究资源 GitHub技术积累账号建设价值技术搜索技巧开源贡献建议 后渗透信息收集MSF信息收

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0