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<T>().Where("1=1").ExecuteAffrows()
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 (九)删除数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hibernate4实战 之 第一部分
- 下一篇: 【PKUSC2019】线弦图【计数】【树