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设置事务对象
ToSqlstring返回即将执行的SQL语句
ExecuteAffrowslong执行SQL语句,返回影响的行数
ExecuteDeletedList<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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决: IDEA 代码 commit 后,Local Changes 中代码依旧在,提交失败,报错:is out of date

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 代码提交后 Local Changes 中的代码未消失。查看 Event log 发现提交失败。 如下 红框中位置就是 Event log&#xff0c;或者点击…

FreeSql (十)更新数据

FreeSql支持丰富的更新数据方法&#xff0c;支持单条或批量更新&#xff0c;在特定的数据库执行还可以返回更新后的记录值。 var connstr "Data Source127.0.0.1;Port3306;User IDroot;Passwordroot;" "Initial Catalogcccddd;Charsetutf8;SslModenone;Max po…

科目三的7个小步骤

科目三路考中&#xff0c;做好几个步骤就可以顺利的通过考试了&#xff0c;以下来分享下路考中需要注意的几个点。1、上车前&#xff0c;无论你在车辆的什么位置&#xff0c;请务必从车的右侧绕过车头走到驾驶室门前&#xff0c;先观察车前道路上是否有障碍&#xff0c;再观察车…

解决:The ‘Access-Control-Allow-Origin‘ header contains multiple values‘x, *‘, but only one is allowed.

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 跨域问题报错&#xff1a; Access to XMLHttpRequest at http://xx.xx.xx.xx/getUser from origin http://ergouzi.fun has been bloc…

科目三道路考试技巧流程详解

科目三是公认最难的考试科目&#xff0c;它不像科目二练习是在驾校训练场&#xff0c;有些技术不错的学员也会卡在这个项目上&#xff0c;由于突发状况多&#xff0c;了解考试流程是必不可少的。考试流程&#xff1a;1、上车前的准备工作2、上车起步3、变更车道4、直线行驶5、学…

springbootajaxhas been blocked by CORS policy: No ‘Access-Control-Allow-Origin

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 ajaxspringboot解决跨域问题&#xff0c;以下报的错误就是html跨域的问题 Access to XMLHttpRequest at http://localhost:8080/user/l…

起步前要做哪些准备?

开车前&#xff0c;做好起步的准备工作是必不可少的&#xff0c;有的人可能还不知道开车前要做那些起步工作。一、开车起步前&#xff0c;检查工作不能忘1、检查车子轮胎是否完好&#xff0c;若发现轮胎有损毁&#xff0c;及时更换。2、检查地面是否有会造成伤害的事或物&#…

什么是响应式布局设计

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 看一个例子&#xff1a;Mashable 的首页&#xff1a; 浏览器窗口最大化时&#xff1a; 缩小浏览器窗口&#xff1a; 再缩小&#x…

科目三电子路考细节部分

科目三考试是电子监控&#xff0c;相对之前的考官监考更为严格&#xff0c;没有了考官的提醒&#xff0c;我们更要注意什么&#xff1f;其实电子路考考的就是一种意识&#xff0c;一种安全意识。这也就是为什么在考试之前教练反复强调的不是技巧&#xff0c;而是打转向灯按喇叭…

PHP 与 JSP 比较(PHP、ASP、JSP是什么)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 PHP PHP&#xff08;Hypertext Preprocessor&#xff09;是一种嵌入HTML页面中的脚本语言。它大量地借用C和Perl语言的语法&#xff0c;…

FreeSql (十四)批量更新数据

FreeSql支持丰富的更新数据方法&#xff0c;支持单条或批量更新&#xff0c;在特定的数据库执行还可以返回更新后的记录值。 var connstr "Data Source127.0.0.1;Port3306;User IDroot;Passwordroot;" "Initial Catalogcccddd;Charsetutf8;SslModenone;Max po…

FreeSql (十五)查询数据

FreeSql在查询数据下足了功能&#xff0c;链式查询语法、多表查询、表达式函数支持得非常到位。 IFreeSql fsql new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, "Data Source127.0.0.1;Port3306;User IDroot;Passwordroot;Initial Catalogcc…

路考变更车道该注意什么?

路考变更车道该注意什么&#xff1f;路考变更车道具体操作方法&#xff1f;路考变更车道注意事项&#xff1f;变更车道技巧&#xff1f;学车啦小编来指导让你更好的来了解路考变更车道&#xff1a; 操作方法 1、观察与判断观察车辆后方、侧方和准备变更的车道上的交通流情况; 2…

Apache RocketMQ:简单消息示例

通过三种方式来发送RocketMQ消息使用: 可靠的同步发送, 可靠的异步发送和单向传输。 这个页面举例说明了这三种消息发送方式. 根据示例找出最适合你的特定用例。 可靠的同步传输 应用&#xff1a;可靠的同步传输广泛应用于重要通知消息&#xff0c;短信通知&#xff0c;短信…

FreeSql (十六)分页查询

IFreeSql fsql new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, "Data Source127.0.0.1;Port3306;User IDroot;Passwordroot;Initial Catalogcccddd;Charsetutf8;SslModenone;Max pool size10").UseAutoSyncStructure(true) //自动同步实…

电脑考官三点技巧

路考智能考试系统&#xff0c;考生直接从电脑语音获得指令进行考试&#xff0c;系统会根据考试车的实际位置自动并进行评判&#xff0c;考官不再坐在副驾驶座。诀窍一&#xff1a;夜间道路行驶&#xff0c;不同情况打不同灯&#xff0c;一定要非常熟悉。灯光过不了关&#xff0…

git 提交 不用输入用户名、密码的方法(GIT免密提交)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 我以前设置过&#xff0c;但最近把项目换地方了&#xff0c;环境也改了些配置&#xff0c;发现不能免密 push 了。 设置方法如下&#…

FreeSql (十七)联表查询

FreeSql在查询数据下足了功能&#xff0c;链式查询语法、多表查询、表达式函数支持得非常到位。 IFreeSql fsql new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, "Data Source127.0.0.1;Port3306;User IDroot;Passwordroot;Initial Catalogcc…

科目三路考经验分享

科目三路考&#xff0c;对于一个新手&#xff0c;如果没有很好的心理素质&#xff0c;就可能会慌张的无法通过科目三路考考试。其次就是起步要领&#xff0c;上车后调整好座位&#xff0c;系好保险带。把挡位放在空挡&#xff0c;点火&#xff0c;打开左方向灯&#xff0c;切换…

vue 实现瀑布流布局的 组件/插件总汇:vue-waterfall、vue-waterfall-easy、vue-virtual-collection、vue-grid-layout

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 瀑布流作为当前比较流行的一种网页布局方式&#xff0c;在视觉上呈现出参差不齐、琳琅满目、唯美的视觉效果&#xff0c;该布局随着页面…