删除是一个非常危险的操作,FreeSql对删除支持并不强大,仅支持了单表有条件的删除方法。

不想过多的介绍拉长删除数据的系列文章,删除数据的介绍仅此一篇。

若Where条件为空的时候执行方法,FreeSql仅返回0或默认值,不执行真正的SQL删除操作。

为了增强系统的安全性,强烈建议在实体中增加 is_deledted 字段做软删除标识。

var connstr = "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;" + "Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=10";IFreeSql fsql = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, connstr).UseAutoSyncStructure(true) //自动同步实体结构到数据库.Build();[Table(Name = "tb_topic")]
class Topic {[Column(IsIdentity = true, IsPrimary = true)]public int Id { get; set; }public int Clicks { get; set; }public string Title { get; set; }public DateTime CreateTime { get; set; }
}

动态条件

Delete<Topic>(object dywhere)

dywhere 支持

  • 主键值
  • new[] { 主键值1, 主键值2 }
  • Topic对象
  • new[] { Topic对象1, Topic对象2 }
  • new { id = 1 }
fsql.Delete<Topic>(new[] { 1, 2 }).ExecuteAffrows();
//DELETE FROM `tb_topic` WHERE (`Id` = 1 OR `Id` = 2)fsql.Delete<Topic>(new Topic { Id = 1, Title = "test" }).ExecuteAffrows();
//DELETE FROM `tb_topic` WHERE (`Id` = 1)fsql.Delete<Topic>(new[] { new Topic { Id = 1, Title = "test" }, new Topic { Id = 2, Title = "test" } }).ExecuteAffrows();
//DELETE FROM `tb_topic` WHERE (`Id` = 1 OR `Id` = 2)fsql.Delete<Topic>(new { id = 1 }).ExecuteAffrows();
//DELETE FROM `tb_topic` WHERE (`Id` = 1)

删除条件

出于安全考虑,没有条件不执行删除动作,避免误删除全表数据
删除全表数据:fsql.Delete<T>().Where("1=1").ExecuteAffrows()

fsql.Delete<Topic>().Where(a => a.Id == 1).ExecuteAffrows();
//DELETE FROM `tb_topic` WHERE (`Id` = 1)fsql.Delete<Topic>().Where("id = ?id", new { id = 1 }).ExecuteAffrows();
//DELETE FROM `tb_topic` WHERE (id = ?id)var item = new Topic { Id = 1, Title = "newtitle" };
fsql.Delete<Topic>().Where(item).ExecuteAffrows();
//DELETE FROM `tb_topic` WHERE (`Id` = 1)var items = new List<Topic>();
for (var a = 0; a < 10; a++) items.Add(new Topic { Id = a + 1, Title = $"newtitle{a}", Clicks = a * 100 });
fsql.Delete<Topic>().Where(items).ExecuteAffrows();
//DELETE FROM `tb_topic` WHERE (`Id` IN (1,2,3,4,5,6,7,8,9,10))

API

方法 返回值 参数 描述
Where <this> Lambda 表达式条件,仅支持实体基础成员(不包含导航对象)
Where <this> string, parms 原生sql语法条件,Where("id = ?id", new { id = 1 })
Where <this> T1 | IEnumerable 传入实体或集合,将其主键作为条件
WhereExists <this> ISelect 子查询是否存在
WithTransaction <this> DbTransaction 设置事务对象
ToSql string 返回即将执行的SQL语句
ExecuteAffrows long 执行SQL语句,返回影响的行数
ExecuteDeleted List<T1> 执行SQL语句,返回被删除的记录

系列文章导航

  • (一)入门

  • (二)自动迁移实体

  • (三)实体特性

  • (四)实体特性 Fluent Api

  • (五)插入数据

  • (六)批量插入数据

  • (七)插入数据时忽略列

  • (八)插入数据时指定列

  • (九)删除数据

  • (十)更新数据

  • (十一)更新数据 Where

  • (十二)更新数据时指定列

  • (十三)更新数据时忽略列

  • (十四)批量更新数据

  • (十五)查询数据

  • (十六)分页查询

  • (十七)联表查询

  • (十八)导航属性

  • (十九)多表查询

  • (二十)多表查询 WhereCascade

  • (二十一)查询返回数据

  • (二十二)Dto 映射查询

  • (二十三)分组、聚合

  • (二十四)Linq To Sql 语法使用介绍

  • (二十五)延时加载

  • (二十六)贪婪加载 Include、IncludeMany、Dto、ToList

  • (二十七)将已写好的 SQL 语句,与实体类映射进行二次查询

  • (二十八)事务

  • (二十九)Lambda 表达式

  • (三十)读写分离

  • (三十一)分区分表

  • (三十二)Aop

  • (三十三)CodeFirst 类型映射

  • (三十四)CodeFirst 迁移说明

  • (三十五)CodeFirst 自定义特性

转载于:https://www.cnblogs.com/FreeSql/p/11531320.html

FreeSql (九)删除数据相关推荐

  1. 什么?还在用delete删除数据《死磕MySQL系列 九》

    别再用delete删除数据 系列文章 一.表空间 二.数据删除流程 三.实践全表删除表文件大小不改变 四.如何正确的减少磁盘文件 五.实践是检验认识是否具有真理性的唯一标准 六.开发建议 七.总结 系 ...

  2. SqlService基础一篇搞定(建库建表、插入数据、修改和删除数据、基础查询、条件查询、模糊查询、聚合函数、分组查询、多表查询)

    SqlService基础知识总汇 前言 一.SQLSERVER建库建表 1.检查数据库名是否存在 2.创建数据库 3.建表 4.修改表结构 5.删除添加约束 二.SQLSERVER插入数据 1.向部门 ...

  3. 数据科学和人工智能技术笔记 十九、数据整理(上)

    十九.数据整理(上) 作者:Chris Albon 译者:飞龙 协议:CC BY-NC-SA 4.0 在 Pandas 中通过分组应用函数 import pandas as pd# 创建示例数据帧 d ...

  4. List 数据add进去的是一个bean 的时候删除数据的方法

    这个时候要删除数据,也是用到add 进 list 里面的bean 然后使用for 循环对应里面的数据的方法 例如: selectList.remove(findSeatInfoBean(xx, xx) ...

  5. 删除mysql表_Mysql 删除数据表的三种方式详解

    用法: 1.当你不再需要该表时, 用 drop; 2.当你仍要保留该表,但要删除所有记录时, 用 truncate; 3.当你要删除部分记录或者有可能会后悔的话, 用 delete. 删除程度可从强到 ...

  6. Swift 中使用 SQLite——修改和删除数据

    本文主要介绍在SQLite中修改数据.删除数据: 更新记录 /// 将当前对象信息更新到数据库 /// /// - returns: 是否成功 func updatePerson() -> Bo ...

  7. IOS tableView删除数据

    NSMutableArray *_allshops; NSMutableArray *_deleteshops; -(IBAction)remove{ 1. //记录删除的行号 //创建动态数组存放行 ...

  8. asp.net ajax删除数据,Asp.net MVC 2 使用Ajax删除数据

    一.新建一个Asp.net MVC 2 Empty Web Application. 二.添加一个名叫DataClasses1.dbml的Model,拖放Student表,最后如下图所示. 三.添加一 ...

  9. Truncate 删除数据

    引用:http://baike.baidu.com/view/1230585.htm Truncate是SQL中的一个删除数据表内容的语句,用法是: 语法 TRUNCATE TABLE name 参数 ...

最新文章

  1. php的yii2框架下开发环境xampp,vim,xdebug,DBGp的搭建
  2. iOS 获取appstore 版本号
  3. linux下gcc升级
  4. Java 集合框架 : Collection、Map
  5. java多线程编程—高级主题_Java day20 高级编程【第一章】Java多线程编程
  6. java 集成ibm mq 教程_IBM MQ JMS 与spring的整合
  7. IOS人脸识别开发入门教程--人脸检测篇
  8. 【自动驾驶技术概论】自动驾驶技术之汽车构造基础
  9. js return加分号_JavaScript 语句后应该加分号么?
  10. 居家第二十六天烤鸡翅
  11. Java面试题 — Java基础
  12. 电脑链接wifi显示无法连接服务器,电脑连接wifi出现感叹号_电脑连接wifi成功但上不了网怎么办?-192路由网...
  13. SQL零基础入门学习(四)
  14. Java面向对象和面向过程的区别
  15. android 禁用触摸屏,Touch Protector-安卓禁用手机触摸屏软件
  16. oracle dbms_repair,DBMS_REPAIR包使用详解
  17. Docker的原理,详细
  18. java中double身高_五个人比身高 (java)
  19. 百度地图android自定义文字,Android SDK | 百度地图API SDK
  20. WINXP开始运行命令集

热门文章

  1. 【JS 逆向百例】某空气质量监测平台无限 debugger 以及数据动态加密分析
  2. Python 数据分析三剑客之 Matplotlib(三):图例 / LaTeX / 刻度 / 子图 / 补丁等基本图像属性
  3. 【Python CheckiO 题解】Long Repeat
  4. node输出mysql的数据_node.js+async+mysql 查询数据输出问题,如何分别统计、提取每个sql语句的结果!!...
  5. CCIE-LAB-第四篇-OSPFv2+SHA384+BFD
  6. 【机器学习】Softmax和Sigmoid
  7. 【ZOJ - 3963】Heap Partition (STLset,二叉树的性质,构造,贪心,思维)
  8. 【HDU - 5914 】Triangle (打表 或 set维护)
  9. java创建的zip没写入权限,java中的zip创建错误
  10. matlab漂亮图表,漂亮,美观的图表之Matlab强势回归~~~~走你8