FreeSql学习笔记——5.删除
前言
对于FreeSql来说,删除的支持并不强大,只有在Where条件不为空的时候才执行,否则返回0或默认值,不执行删除操作;
语法
fsql.Delete<Class>(object dywhere)
条件参数支持:
- 主键
- 主键数组
- 对象
- 对象数组
- 指定字段值
主键删除
将主键作为sql的条件删除记录
_freeSql.Delete<Student>(15);
//DELETE FROM [Student] WHERE ([Id] = 15)
_freeSql.Delete<Student>(new[] { 13, 14 });
//DELETE FROM [Student] WHERE ([Id] IN (13,14))
对象删除
跟想象的不一样,使用对象的删除也是用的主键拼接删除条件
_freeSql.Delete<Student>(new Student { Id = 13, Name = "xx" });
//DELETE FROM [Student] WHERE ([Id] = 13)
_freeSql.Delete<Student>(new List<Student> { new Student { Id = 13, Name = "xx" }, new Student { Id = 14, Name = "xx" } });
//DELETE FROM [Student] WHERE ([Id] IN (13,14))
条件删除
条件删除就是用指定字段拼接条件,也是用的比较频繁的
_freeSql.Delete<Student>(new { Name = "小明9" });
//DELETE FROM [Student] WHERE ([Name] = N'小明9')
字典删除
既然新增支持字典,删除也支持,看下使用字典删除sql是什么样的
DELETE FROM [Student] WHERE ([Id] = 15 AND [Name] = N'xxxx')
//DELETE FROM [Student] WHERE ([Id] = 15 AND [Name] = N'xxxx')
List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
var dic = new Dictionary<string, object>();
dic.Add("Id", 15);
dic.Add("Name", "xxxx");
list.Add(dic);
var dic1 = new Dictionary<string, object>();
dic1.Add("Id", 14);
dic1.Add("Name", "xxxx");
list.Add(dic1);
_freeSql.DeleteDict(list).AsTable(nameof(Student)).ToSql();
//DELETE FROM [Student] WHERE (([Id] = 15 AND [Name] = N'xxxx') OR ([Id] = 14 AND [Name] = N'xxxx'))
w(゚Д゚)w 使用字典删除会使用所有值使用AND拼接条件,多个字典之间使用OR拼接条件!!!(原以为使用对象删除会是这种方式)
查询删除
使用查询出来的数据集作为条件删除指定记录
_freeSql.Select<Student>().Where(x => x.Age > 7).ToDelete().ToSql();
//DELETE FROM [Student] WHERE ([Id] in (select * from (SELECT a.[Id] FROM[Student] a WHERE(a.[Age] > 7)) ftb_del))
注意:
出于安全考虑,没有条件不执行删除动作,避免误删除全表数据。
删除全表数据:
_freeSqll.Delete().Where("1=1").ExecuteAffrows();//慎用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现