深入理解SqlSugar ORM框架的使用与实战

一、引言
SqlSugar 是一个轻量级的 ORM(对象关系映射)库,用于在 C# 中与 SQL 数据库进行交互。它提供了一个简单易用的 API,使得开发人员可以以对象的形式而不是原始 SQL 语句进行工作。在本文中,我们将通过实例代码的形式,详细讲解 SqlSugar 的使用方法和实战技巧。
二、基本概念
2.1 对象关系映射(ORM)
对象关系映射(Object Relational Mapping,ORM)是一种技术,用于在应用程序和数据库之间建立映射关系。通过 ORM,我们可以将数据库表映射为 C# 类,从而使得数据库访问代码实现更加简单、直观。
2.2 SqlSugar 的特点
开箱即用:无需配置或修改,即可使用。
ORM 功能齐全:支持分表、分库、关联、事务等。
高性能:支持.NET百万级大数据写入和更新、分表和几十亿查询和统计等。
简单易用:学习成本低,容易上手。
三、使用方法
3.1 安装
通过 NuGet 安装 SqlSugar。

Install-Package SqlSugar

3.2 创建数据库连接
使用 SqlSugarClient 创建数据库连接。

var db = new SqlSugarClient(new ConnectionConfig
{ConnectionString = "Data Source=本地服务器;Initial Catalog=MyDatabase;Integrated Security=True",DbType = DbType.SqlServer
});

3.3 数据库操作
3.3.1 查询
使用 Queryable 查询数据。

var students = db.Queryable<StudentInfo>().ToList();

3.3.2 增加
使用 Insertable 增加 data。

var user = new User()
{UserName = "Sunny",Email = "Sunny@example.com"
};
db.Insertable<User>(user).ExecuteCommand();

3.3.3 更新
使用 Updateable 更新 data。

var user = new User()
{Grade = "测试",Class = "Sunny"
};
db.Updateable<User>(new StudentInfo
{Grade = user.Grade,Class = user.Class
}).UpdateColumns(s => new StudentInfo.Gender).WhereColumns(s => s.Name).ExecuteCommand();

3.3.4 删除
使用 Deleteable 删除 data。

db.Deleteable<StudentInfo>(1).ExecuteCommand();

四、实战技巧
4.1 分页查询
使用 Page 方法进行分页查询。

var page = 1;
var pageSize = 10;
var studentList = db.Page<StudentInfo>(page, pageSize).ToList();

4.2 复杂关联查询
使用 Select 方法进行复杂关联查询。

var query = db.Select<User, StudentInfo>(info => info.Grade, user => user.Grade).ToList();

4.3 事务管理
使用 BeginTransaction、CommitTransaction 和 RollbackTransaction 进行事务管理。

db.BeginTransaction();
try
{// 执行数据库操作db.Insertable<User>(user).ExecuteCommand();db.CommitTransaction();
}
catch
{db.RollbackTransaction();
}

五、总结
本文详细讲解了 SqlSugar ORM 框架的基本概念、使用方法和实战技巧。通过实例代码的形式,让读者深入了解并掌握 SqlSugar 的使用。在实际开发过程中,我们可以根据具体需求,灵活运用 SqlSugar 提供的各种方法,提高开发效率,降低开发成本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/593573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++入门【18-C++ 指针】

C 指针 学习 C 的指针既简单又有趣。通过指针&#xff0c;可以简化一些 C 编程任务的执行&#xff0c;还有一些任务&#xff0c;如动态内存分配&#xff0c;没有指针是无法执行的。所以&#xff0c;想要成为一名优秀的 C 程序员&#xff0c;学习指针是很有必要的。 正如您所知…

nginx 一、安装与conf浅析

文章目录 一、安装nginxdocker方式安装linux方式安装Ubuntu 或 Debian 系统&#xff1a;CentOS 或 RHEL 系统&#xff1a; macOS 系统&#xff08;使用 Homebrew&#xff09;&#xff1a;Windows 系统&#xff1a; 二、nginx.conf浅析 Nginx&#xff08;发音为“engine-x”&…

椭圆中点算法

原理 椭圆的扫描转换与圆的扫描转换有相似之处&#xff0c;但也有不同&#xff0c;主要区别是椭圆弧上存在改变主位移方向的临界点。瞬时针绘制四分椭圆弧的中点算法&#xff0c;根据对称性可以绘制完整的椭圆。 四分椭圆弧 中心在原点&#xff0c;长半轴为 a a a、短半轴为…

01-03

利用模板类完成顺序表

简易电子琴

#include<reg51.h> //包含51单片机寄存器定义的头文件 sbit P14P1^4; //将P14位定义为P1.4引脚 sbit P15P1^5; //将P15位定义为P1.5引脚 sbit P16P1^6; //将P16位定义为P1.6引脚 sbit P17P1^7; //将P17位定义为P1.7引脚 unsigned char keyval; …

Redis 的常用命令

一、Redis 通用命令 TYPE key&#xff1a;返回 key 所储存的值的类型。 OBJECT ENCODING key&#xff1a;返回key所储存的值的底层编码方式。 DEL key&#xff1a;该命令用于在 key 存在时删除 key。 EXPIRE key seconds&#xff1a;设置指定key的过期时间。 RENAME key newke…

高端大气的在线文档

背景 产品介绍&#xff0c;帮助手册&#xff0c;操作手册&#xff0c;开发说明&#xff0c;个人的简单网站等等&#xff0c;都需要一个在线的文档&#xff0c;特别是开源社区的在线文档也非常需要&#xff0c;开源社区也为此提供了大量的工具。如何找到一款高端大气的&#xf…

使用MyBatis实现动态SQL查询的最佳实践

在数据库操作中&#xff0c;动态SQL查询是一种非常常见的需求。MyBatis作为一款优秀的持久层框架&#xff0c;提供了强大的动态SQL功能&#xff0c;允许开发者根据不同条件动态构建SQL查询语句&#xff0c;从而灵活地执行数据库操作。本文将深入探讨MyBatis中动态SQL查询的实现…

解决Golang WriteHeader设置后,Content-Type失效的问题

场景 最近笔者在研究web框架过程中&#xff0c;发现了一个响应类型的问题&#xff0c;困扰许久&#xff0c;原因就是设置了响应状态码后&#xff0c;然后设置响应类型为application/json。在实际请求后&#xff0c;响应类型变成了text/plain; charsetutf-8格式。 问题解决&…

SQL备忘--子查询与ALL/ANY运算符

概念 在SQL查询语句中包含了其他的查询语句&#xff0c;出现了SQL语句的嵌套&#xff0c;即为使用了嵌套子查询 子查询用法 子查询可以用在&#xff1a; SELECT查询字段中FROM表名语句中WHERE条件中 由此可见子查询用法广泛&#xff0c;可用在SQL基本语句的每个位置。但具…

学习Go语言Web框架Gee总结--前缀树路由Router(三)

学习Go语言Web框架Gee总结--前缀树路由Router router/gee/trie.gorouter/gee/router.gorouter/gee/context.gorouter/main.go 学习网站来源&#xff1a;Gee 项目目录结构&#xff1a; router/gee/trie.go 实现动态路由最常用的数据结构&#xff0c;被称为前缀树(Trie树) 关…

python代码大全(持续更新)

读写文件 # 读取文件 with open(file.txt, r) as file:content file.read()# 写入文件 with open(file.txt, w) as file:file.write(Hello, World!)HTTP请求 import requestsresponse requests.get(https://api.example.com/data) data response.json()JSON处理 import j…

机器学习中聚类算法-简单介绍

聚类算法 聚类算法&#xff1a; 将数据分成不同的组&#xff0c;如K均值&#xff08;K-Means&#xff09;和层次聚类&#xff08;Hierarchical Clustering&#xff09;。 聚类是机器学习中一类重要的无监督学习问题&#xff0c;其目标是将数据集中的样本划分为不同的组&#x…

【AI】目标检测算法DETR源码解析及推理测试

说到目标检测&#xff0c;自然而然我们会想到YOLO这个框架&#xff0c;YOLO框架已经发展到V8版本了&#xff0c;各种应用也比较成熟&#xff0c;不过我最近在研究Transformer&#xff0c;今天的主角是Transformer在目标检测的开山之作&#xff1a;DETR&#xff1a;End-to-End O…

FairGuard游戏加固产品常见问题解答

针对日常对接中&#xff0c;各位用户对FairGuard游戏加固方案在安全性、稳定性、易用性、接入流程等方面的关注&#xff0c;我们梳理了相关问题与解答&#xff0c;希望可以让您对产品有一个初步的认知与认可。 Q1:FairGuard游戏加固产品都有哪些功能? A&#xff1a;FairGuar…

结构体详解

结构体&#xff1a; 一系列具有相同类型或不同类型的数据构成的数据集合&#xff0c;也叫结构 结构体可以用来封装一些属性来组成新的类型。 结构体的大小&#xff1a; 结构体的大小不是结构体元素单纯相加。内存对齐&#xff08;若计算机使用32位字长的cpu&#xff0c;对32位的…

【算法】dp题单

题单链接&#xff1a; https://vjudge.net/contest/574209#overview 目录 1. 洛谷 P1020 导弹拦截 &#xff08;dp二分Dilworth 定理&#xff09; 2. P1439 最长公共子序列&#xff08;二分求最长公共子序列&#xff09; 3. 洛谷 P1854 花店橱窗布置 &#xff08;线性dp 用…

OpenFeign

OpenFeign 一、基本使用 1、引入依赖 <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId><groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-start…

k8s的网络

k8s的网络 k8s中的通信模式&#xff1a; 1、pod内部之间容器与容器之间的通信 在同一个pod中的容器共享资源和网络&#xff0c;使用同一个网络命名空间&#xff0c;可以直接通信的 2、同一个node节点之内&#xff0c;不同pod之间的通信 每个pod都有一个全局的真实的ip地址…

“MapStruct妙用指南:解锁Java对象映射的强大力量!“ ️

目录 1-10 MapStruct进阶问题解析11-20 MapStruct进阶问题解析感谢阅读 前言&#xff1a; 欢迎来到今天的博客&#xff0c;我们将一同探索Java领域中一款备受瞩目的对象映射框架 — MapStruct。它的强大之处不仅在于简化代码&#xff0c;更在于提高开发效率。在本文中&#xf…