Sqlsugar从入门到放弃(上)

学习视频:019_SqlSugar-数据库操作-连接查询-2_哔哩哔哩_bilibili

 

环境要求

VS2022 / .Net 6 / SqlServer

安装方式

项目内Nuget包中引用:

.Net Core 3 & 5 & 6 &7 &8 ——》SqlSugarCore

.Net Core 2 ——》SqlSugarCore_NetCore2

.Net Framework ——》SqlSugar

 

一、数据库迁移和映射

1.1 Dbfirst

 示例:

 

1.2 Codefirst

(1)基础操作

 

(2)相关映射特性

示例:

 

(3)索引支持

 创建方法可参考前面的特性内容:

关键字:SugarIndex

 示例:结合CodeFirst

 

 数据库中显示结果:

 数据库中索引生成脚本:

 

二、库表操作

针对数据库、表、视图的操作

 示例:

 

三、数据库操作

针对表数据的操作

3.1 插入操作(有返回值)

 

 示例:

 (1)单条插入

 

(2)忽略字段

 

(3)插入指定字段

 

 (4)批量插入

 

(5)分页插入

 

(6)大数据量插入

普通插入方式 & BulkCopy方式插入对比

 

 (7)Guid主键自动赋值

 

(8)调用实体内方法

 

(9)临时表

 

3.2 修改操作

更新操作的重点在于后面一定要加上ExecuteCommand

ExecuteCommand——》返回受影响行数

ExecuteCommandHasChange——》返回bool值:是否受影响,true or false

 示例:

操作对象表:

(1)输出sql语句

修改相关的多个操作都封装在下面的方法:UpdateData()中。

下文进行了配置数据库链接,初始化sqlsuger等操作,后面设置输出sql语句后,需要在后文中操作数据库时才能看到结果。

(2)单条更新

 

(3)按需更新

 (4)批量修改

 

 

(5)大数据量操作

 以下使用普通方式 vs BulkUpdate方式做了时间对比

 (6)忽略某列不更新 & 只更新指定列

 

(7)NULL列 & 默认值不更新

 

 (8)无主键/指定列更新

 

(9)条件更新

 

(10)重新赋值更新

 

(11)条件更新 & 表达式更新

 

(12)根据字典更新

 

3.2 添加或修改

场景1:当前操作的数据——在数据库不存在就认为是添加操作,存在则认为是修改操作

场景2:根据主键Id来判断,如果Id=0——》新增,数据库中自动生成Id

             如果Id≠0——》认为是修改操作

关键字:Storageable() + ExecuteCommand()

场景1示例:

 

场景2示例:

 

PS.这种方法可以结合 忽略更新 使用——本质上是做条件的堆叠,先用storageable,后面加上忽略等条件,最后进行ExecuteCommand();

注意一个关键字:Tostorage(),如果storageable单独放在一句的话,它要放在语句的末尾;

 

示例如下:

 与 无主键操作 结合:

 与 批量操作 结合:

 与 字典操作 结合:

 

3.3 删除操作

关键字:Deleteable

 示例:

操作实体:

 (1)单个实体删除 & 删除实体集合

(2)根据主键 & 主键数组删除

(3)无主键删除 & 无主键数组删除

(4)表达式删除

(5)无实体删除

 (6)根据字典删除

(7)关于软删除的便捷方式

关于软删除,如果实体中包含字段IsDelete 或者IsDeleted,可以用In+IsLogic的快捷方式来进行软删除:

 

 另外,加入实体中软删除的标识字段使用了其他的命名,也可以使用指定字段名的方式来进行快捷更改:

同时,也支持更改指定字段值的同时更新修改时间(将下文CreateTime替换为UpdateTime即可):

 

 

3.4 过滤器

对于一些通用操作的统一定制。

eg:数据库中使用软删除——》当查询数据时基本都要使用未删除的数据。按正常查询逻辑,就要在查询条件中加上IsDeleted=0,每次查询都要加很麻烦;

如果用过滤器做配置,就可以省掉这个麻烦——定义过滤器就是一个条件,定义之后可以把过滤器设置为全局,任何一个查询操作都会走这个过滤器

 

示例:

 

3.5 基本查询操作

关键词:Queryable()

(1)普通条件查询:Queryable & Where

 

(2)动态条件查询:Or & OrIF

就是表达式目录树的拼接——首先要准备Expression的对象,之后用 OrIF 或 Or 进行条件拼接;

 

(3)模糊查询:contains

(4)主键查询:InSingle / Single

多主键查询 :WhereClassByPrimaryKey

 (5)查询第一条 / 前几条:First / Take

 (6)查询数据行数:Count

(7)判断记录是否存在:Any

 (8)In查询 & Not In查询:Contains &!Contains

 

(9)In的模糊查询

首先需要了解一下 Lanmbda条件拼接 ——

采用这个方式,in的模糊查询如下——

 (10)排序:OrderBy

(11)查询一列 & 查询单条数据

查询一列:Select()中处理

查询单条:Single

 (12)获取最大值、最小值:Max、Min

(13)求和:Sum

 (14)查询过滤某一字段:IgnoreColumns

 

3.6 连接查询

下面实例中用到的三张关联表:Company、User、

 

 

 

 

  

(1)做连接查询

 

(2)右连接查询

(3)内连接查询

(4)全连接查询

 

3.7 复杂查询

(1)分组聚合

(2)Distinct关键字

(3)开窗函数

(4)合并结合

(5)分页查询

(6)Order排序

 

posted @ 2023-06-28 11:12  暴躁老砚  阅读(2452)  评论(0编辑  收藏  举报