前言

  对于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();//慎用
 
 
 
 
 

FreeSql学习笔记——5.删除的更多相关文章

  1. Jquery学习笔记 --ajax删除用户,使用了js原生ajax

    主要复习了php的pdo数据库操作,和js的ajax,真麻烦,希望jquery的ajax简单点. index.php: 1 <!DOCTYPE html> 2 <html lang= ...

  2. PHP学习笔记:删除与销毁session

    删除某个session值可以使用PHP的unset函数,删除后就会从全局变量$_SESSION中去除,无法访问. session_start(); $_SESSION['name'] = 'jobs' ...

  3. Jquery学习笔记:删除节点的操作

    假设如下的html代码 <div id="mydiv" style="width:100px;height:100px;border:1px solid red&q ...

  4. MySQL学习笔记:删除存储过程和函数

    删除存储过程.存储函数主要使用drop语句: drop procedure  —— 删除存储过程 drop function  —— 删除存储函数 语法: DROP {PROCEDURE|FUNCTI ...

  5. Docker学习笔记_删除某个镜像

    实验:删除某个镜像 sudo docker rmi [Image ID] 1.查看镜像的ID                  sudo docker images 2.删除镜像            ...

  6. MongoDB 学习笔记之 删除数据,集合,数据库

    删除数据,集合,数据库: 删除一个文档: db.media.deleteOne({"name": "Sky"}) 删除多个文档: db.media.delete ...

  7. Kafka 学习笔记之 删除Topic

    删除Topic 1. 显示所有Topic信息,testTopic是我们将要删除的Topic 2. 首先确认server.properties下面配置是否已经加上delete.topic.enable= ...

  8. PowerBuilder学习笔记之删除和加载PBL文件的方法

    删除PBL目录的方法:直接点删除键删除 加载PBL文件的方法:点Browse按钮选择PBL文件

  9. pandas学习笔记之删除指定列

    删除指定 def df["列名"] del df4["韩国地震影响"] 直接删除,df4中不在含有"韩国地震影响"这一列了 drop 不改变 ...

  10. git的使用学习笔记---分支删除

    一.使用场景: 1.修改bug,原来分支不管用 2,分支太多不易管理 二.方法 git branch -d branch1 无法删除:原因在与该分支为目前工作的分支,所以要切换分支 git check ...

随机推荐

  1. Goland破解之无限重置(最新)

    分享一下 JetBrains 全家桶 IDEA 2021.x 的激活破解教程,相当于永久激活 破解了,亲测有效,下面是详细文档哦~ JetBrains 全家桶 IDEA 2021.x 破解激活教程,相 ...

  2. 【快慢指针】LeetCode 143. 重排链表

    题解 用快慢指针先找到中间结点,然后断开前后两条链,用头插法的思路逆转后面那条链,最后两条链依次从前往后遍历插入即可. 参考代码 /** * Definition for singly-linked ...

  3. GooseFS透明加速能力,助力加速 CosN 访问 COS 的性能

    01 前言 原生的对象存储接口协议并不兼容HDFS文件语义,因此对象存储COS提供了COSN工具这一的标准的 Hadoop 文件系统实现,可以为 Hadoop.Spark 以及 Tez 等大数据计算框 ...

  4. R机器学习:朴素贝叶斯算法的理解与实操

    最近又看了很多贝叶斯算法的一些文章,好多的文章对这个算法解释起来会放一大堆公式,对代数不好的人来说真的很头疼.本文尝试着用大白话写写这个算法,再做个例子,帮助大家理解和运用. Naive Bayes ...

  5. Powershell 源码批判

    代码里充斥着过程式编程的搞法:比如这里 Utils.PathIsUnc,分散的到处都是 internal static IEnumerable<string> GetDefaultAvai ...

  6. Spring Boot + K8S 中的滚动发布、优雅停机、弹性伸缩、应用监控、配置分离

    前言 K8s + SpringBoot实现零宕机发布:健康检查+滚动更新+优雅停机+弹性伸缩+Prometheus监控+配置分离(镜像复用) 配置 健康检查 健康检查类型:就绪探针(readiness ...

  7. Java调用Shell问题整理

    背景 java可以通过Runtime来调用其他进程,如cmd命令,shell文件或脚本等. 基本用法 Runtime执行时返回一个Process对象,利用该对象完成脚本执行.下面的例子中,Linux的 ...

  8. IM开发者的零基础通信技术入门(十二):上网卡顿?网络掉线?一文即懂!

    [来源申明]本文引用了微信公众号"鲜枣课堂"的<上网慢?经常掉线?这篇文章告诉你该怎么办!>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注 ...

  9. IM跨平台技术学习(四):蘑菇街基于Electron开发IM客户端的技术实践

    本文由蘑菇街前端技术团队分享,原题"Electron 从零到一",有修订和改动. 1.引言 本系列文章的前面几篇主要是从Electron技术本身进行了讨论(包括:第1篇初步了解El ...

  10. 从韩国客机事故看Java异常处理机制:保障程序的“安全着陆”

    当地时间12月29日上午9时,韩国济州航空编号7C2216航班坠毁于韩国务安机场,除救出的两人外,预计事故其余人员全部遇难.据了解,失事客机因起落架故障准备进行机腹着陆,在此过程中发生事故,最终与机场 ...