前言

  对于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. Vue.js 组件数据交互

    1.前言 本节讲述组件之间如何进行数据交互 2.props属性与非 prop 的属性 父组件通过属性绑定的形式传值给子组件,这种传值分2种 类别 含义 说明 props 子组件本身已经通过props定 ...

  2. 编写bash脚本快速kill或启动tomcat

    ​假设tomcat安装路径为 /home/tomcat,示例如下: 1. kill tomcat进程 vim kill-tomcat-force.sh set fileformat=unix path ...

  3. vue3笔记

    如何创建vue3项目 基于 vue 脚手架 npm i @vue/cli -g vue create <project-name> cd <project-name> npm ...

  4. Java 和 native 的一些进展

    GraalVM Java 生成 DLL/SO https://medium.com/graalvm/3-ways-to-polyglot-with-graalvm-fb28c1542b45 Proje ...

  5. 【bug记录】AttributeError: 'CollectReport' object has no attribute 'description'

    问题截图 问题原因 有完全重复用例,因为写用例的时候,为了图方便,直接复制的,还没来得及改,然后,用pytest运行的时候,就报这个错误了. 问题解决 去掉重复就行了

  6. java -jar命令运行jar包时指定外部依赖jar包

    你们都知道一个java应用项目能够打包成一个jar,固然你必须指定一个拥有main函数的main class做为你这个jar包的程序入口.具体的方法是修改jar包内目录META-INF下的MANIFE ...

  7. Python 在Excel单元格中应用数据条

    在Excel中添加数据条是一种数据可视化技巧,它通过条形图的形式在单元格内直观展示数值的大小,尤其适合比较同一列或行中各个单元格的数值.这种表示方式可以让大量的数字信息一目了然.本文将介绍如何使用Py ...

  8. Qt数据库应用15-通用数据库同步

    一.前言 数据库同步的主要功能是将本地的数据库记录同步到远程的数据库,其中数据库类型不限,比如本地是sqlite数据库,远程可以是mysql数据库,本地是mysql数据库,远程也可以是postgres ...

  9. Qt音视频开发34-Onvif时间设置

    一.前言 对设备设置时间很有必要,这个是必备的功能,毕竟大部分的前端设备比如摄像机本身不带BIOS电池的,所以没法存储时间,要么设置了NTP地址来同步时间,要么其他设备主动对他进行设置时间,如果时间不 ...

  10. IM开发干货分享:网易云信IM客户端的聊天消息全文检索技术实践

    1.引言 在IM客户端的使用场景中,基于本地数据的全文检索功能扮演着重要的角色,最常用的比如:查找聊天记录.联系人,就像下图这样. ▲ 微信的聊天记录查找功能 类似于IM中的聊天记录查找.联系人搜索这 ...