当前位置: 首页 > news >正文

C# SqlSugar ORM 指南

一:框架简介

SqlSugar 是一款由果糖大数据科技团队维护的国产 .NET 开源 ORM 框架,以"开箱即用、简单易上手"著称。

核心优势:

  • 多数据库支持:通过统一的 API 抽象,仅需更改配置中的 DbType 即可无缝切换多种数据库。支持范围包括 MySql、SqlServer、Sqlite、Oracle、PostgreSQL,以及国产的达梦、人大金仓等,最近还开始支持 MongoDB。

  • 易于使用:设计理念强调"超级简单",大部分场景使用默认配置即可,学习曲线平滑。

  • 高性能:在某些映射性能上甚至优于 Dapper,同时提供与商业组件媲美的大数据批量操作功能。


二:快速开始

2.1 安装 NuGet 包

项目类型推荐包
.NET Core / .NET 5+SqlSugarCore
.NET FrameworkSqlSugar
使用 PostgreSQLSqlSugarCore + Npgsql
使用 ClickHouseSqlSugar.ClickHouseCore

2.2 配置数据库连接

通常在 Program.cs 中将 ISqlSugarClient 注册为服务。以 MySQL 为例:

using SqlSugar;

builder.Services.AddScoped<ISqlSugarClient>(sp => {    // 推荐使用 SqlSugarScope 管理单例    var db = new SqlSugarClient(new ConnectionConfig() {        DbType = DbType.MySql,        ConnectionString = "server=localhost;port=3306;user=root;password=your_pwd;database=your_db",        IsAutoCloseConnection = true, // 自动释放连接,推荐开启        InitKeyType = InitKeyType.Attribute // 从实体特性中读取主键信息    });    // AOP 配置:打印执行的 SQL 日志(性能调优利器)    db.Aop.OnLogExecuting = (sql, pars) => {        Console.WriteLine(UtilMethods.GetNativeSql(sql, pars));    };    return db;});

2.3 创建实体类

通过实体类和特性,将 C# 类与数据库表进行映射:

using SqlSugar;[SugarTable("sys_user")] // 指定数据库表名public class User {    [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] // 主键、自增    public int Id { get; set; }    [SugarColumn(Length = 50, IsNullable = false)]    public string UserName { get; set; }    public int Age { get; set; }    [SugarColumn(IsNullable = true)]    public string Email { get; set; }}

三:核心 CRUD 操作

3.1 创建 (Insert)

var db = serviceProvider.GetRequiredService<ISqlSugarClient>();// 插入单条,返回自增主键值var user = new User { UserName = "张三", Age = 25 };int newId = db.Insertable(user).ExecuteReturnIdentity();// 批量插入List<User> users = new List<User> { /* ... */ };db.Insertable(users).ExecuteCommand();

3.2 读取 (Query)

// 查询所有var allUsers = db.Queryable<User>().ToList();// 条件查询var adults = db.Queryable<User>().Where(u => u.Age > 18).ToList();// 查询单条(根据主键)var user = db.Queryable<User>().InSingle(1);

3.3 更新 (Update)​​​​​​​

// 先查后改var userToUpdate = db.Queryable<User>().InSingle(1);userToUpdate.Age = 26;db.Updateable(userToUpdate).ExecuteCommand();// 根据条件直接更新(批量)
http://www.jsqmd.com/news/1167790/

相关文章:

  • 如何在Windows系统中实现苹果级中文字体渲染:PingFangSC技术方案解析
  • TMC7300与STM32F732IE实现高精度有刷电机控制
  • 重新发现XCOM 2模组管理:AML启动器的革命性架构解析
  • 2026 天津 18K 金首饰上门回收 本地老店易奢福,玫瑰金彩金按实重公平计价 - 奢侈品回收实体店
  • 工业图像异常检测:基于 IM-IAD 的 4 种数据困境解决方案与实战代码
  • 3个场景解析:为什么Unblob能彻底改变你的二进制文件处理方式?
  • 2026严选乐山名表名包奢侈品回收浪琴卡地亚江诗丹顿路易威登LV迪奥古驰推荐正规门店高价回收隐私保障放心交易 - 谊识预商务
  • 2026年7月最新沈阳伯爵官方售后客户服务电话及线下网点地址 - 亨得利钟表维修中心
  • 云南GEO服务商蓝队云,15年本土深耕+全网广播IP,AI时代企业获客新选择
  • MateCloud云原生转型:传统架构到微服务架构迁移指南
  • Rnote:免费开源的手写笔记与绘图神器,你的数字创作终极伙伴
  • 潮州电瓶搭电电话救援公司推荐指南(全城覆盖) - 资讯纵览
  • 构建下一代复杂系统的终极方案:SysML v2完整框架深度解析与高效实践指南
  • 杀戮尖塔2绅士mod
  • GPT-5.6 三档分层:Sol / Terra / Luna 定价逻辑拆解指南
  • 黄冈家庭教育指导师正规报名机构推荐 - 最新教育培训热点
  • 网盘直链下载助手深度解析:技术原理与高效下载实战指南
  • 3步掌握QtScrcpy:电脑上流畅控制安卓手机的终极方案
  • 把你的跑步数据变成一张漂亮的个人主页
  • 传输层,从端口号到 UDP 协议
  • 深度解析tusdotnet架构:构建高性能断点续传系统的核心组件
  • 上海交大 × 百度百舸,dVLA-RL 首次打通离散扩散 VLA 强化学习
  • 2026严选六盘水名表名包奢侈品回收浪琴万国萧邦香奈儿古驰圣罗兰精选正规机构排名当场验货不压价 - 谊识预商务
  • MOSS-Transcribe-Diarize输出格式详解:如何解析带说话人标签的时间戳文本
  • 北京万国中国官方售后服务网络全攻略|官网认证电话及地址权威公示(2026年7月最新) - 万国中国服务中心
  • 二手 QUIKLAZE LMCB5 激光雕刻机技术规格详解
  • 2026年6月反渗透膜经销商推荐,超滤MBR膜/熔喷滤芯/朗盛树脂/帘式MBR膜/纯水反渗透膜,反渗透膜厂商哪家好 - 品牌推荐师
  • 2026年7月最新烟台真力时官方售后客服电话及服务网点地址查询 - 亨得利官方服务中心
  • FanControl终极指南:免费开源的风扇控制神器,打造完美散热与静音平衡
  • 如何在浏览器中一键获取网盘文件真实下载地址:开源直链解析工具完全指南