FreeSql (九)删除数据
删除是一个非常危险的操作,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 (九)删除数据相关推荐
- 什么?还在用delete删除数据《死磕MySQL系列 九》
别再用delete删除数据 系列文章 一.表空间 二.数据删除流程 三.实践全表删除表文件大小不改变 四.如何正确的减少磁盘文件 五.实践是检验认识是否具有真理性的唯一标准 六.开发建议 七.总结 系 ...
- SqlService基础一篇搞定(建库建表、插入数据、修改和删除数据、基础查询、条件查询、模糊查询、聚合函数、分组查询、多表查询)
SqlService基础知识总汇 前言 一.SQLSERVER建库建表 1.检查数据库名是否存在 2.创建数据库 3.建表 4.修改表结构 5.删除添加约束 二.SQLSERVER插入数据 1.向部门 ...
- 数据科学和人工智能技术笔记 十九、数据整理(上)
十九.数据整理(上) 作者:Chris Albon 译者:飞龙 协议:CC BY-NC-SA 4.0 在 Pandas 中通过分组应用函数 import pandas as pd# 创建示例数据帧 d ...
- List 数据add进去的是一个bean 的时候删除数据的方法
这个时候要删除数据,也是用到add 进 list 里面的bean 然后使用for 循环对应里面的数据的方法 例如: selectList.remove(findSeatInfoBean(xx, xx) ...
- 删除mysql表_Mysql 删除数据表的三种方式详解
用法: 1.当你不再需要该表时, 用 drop; 2.当你仍要保留该表,但要删除所有记录时, 用 truncate; 3.当你要删除部分记录或者有可能会后悔的话, 用 delete. 删除程度可从强到 ...
- Swift 中使用 SQLite——修改和删除数据
本文主要介绍在SQLite中修改数据.删除数据: 更新记录 /// 将当前对象信息更新到数据库 /// /// - returns: 是否成功 func updatePerson() -> Bo ...
- IOS tableView删除数据
NSMutableArray *_allshops; NSMutableArray *_deleteshops; -(IBAction)remove{ 1. //记录删除的行号 //创建动态数组存放行 ...
- asp.net ajax删除数据,Asp.net MVC 2 使用Ajax删除数据
一.新建一个Asp.net MVC 2 Empty Web Application. 二.添加一个名叫DataClasses1.dbml的Model,拖放Student表,最后如下图所示. 三.添加一 ...
- Truncate 删除数据
引用:http://baike.baidu.com/view/1230585.htm Truncate是SQL中的一个删除数据表内容的语句,用法是: 语法 TRUNCATE TABLE name 参数 ...
最新文章
- php的yii2框架下开发环境xampp,vim,xdebug,DBGp的搭建
- iOS 获取appstore 版本号
- linux下gcc升级
- Java 集合框架 : Collection、Map
- java多线程编程—高级主题_Java day20 高级编程【第一章】Java多线程编程
- java 集成ibm mq 教程_IBM MQ JMS 与spring的整合
- IOS人脸识别开发入门教程--人脸检测篇
- 【自动驾驶技术概论】自动驾驶技术之汽车构造基础
- js return加分号_JavaScript 语句后应该加分号么?
- 居家第二十六天烤鸡翅
- Java面试题 — Java基础
- 电脑链接wifi显示无法连接服务器,电脑连接wifi出现感叹号_电脑连接wifi成功但上不了网怎么办?-192路由网...
- SQL零基础入门学习(四)
- Java面向对象和面向过程的区别
- android 禁用触摸屏,Touch Protector-安卓禁用手机触摸屏软件
- oracle dbms_repair,DBMS_REPAIR包使用详解
- Docker的原理,详细
- java中double身高_五个人比身高 (java)
- 百度地图android自定义文字,Android SDK | 百度地图API SDK
- WINXP开始运行命令集
热门文章
- 【JS 逆向百例】某空气质量监测平台无限 debugger 以及数据动态加密分析
- Python 数据分析三剑客之 Matplotlib(三):图例 / LaTeX / 刻度 / 子图 / 补丁等基本图像属性
- 【Python CheckiO 题解】Long Repeat
- node输出mysql的数据_node.js+async+mysql 查询数据输出问题,如何分别统计、提取每个sql语句的结果!!...
- CCIE-LAB-第四篇-OSPFv2+SHA384+BFD
- 【机器学习】Softmax和Sigmoid
- 【ZOJ - 3963】Heap Partition (STLset,二叉树的性质,构造,贪心,思维)
- 【HDU - 5914 】Triangle (打表 或 set维护)
- java创建的zip没写入权限,java中的zip创建错误
- matlab漂亮图表,漂亮,美观的图表之Matlab强势回归~~~~走你8