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排序