Updated 删除 (markdown)

AlexLEWIS
2021-08-06 11:31:00 +08:00
parent aa3ca8085e
commit 3250e7031e

@@ -1,6 +1,8 @@
删除是一个非常危险的操作FreeSql对删除支持并不强大默认仅支持单表、且有条件的删除方法。
**中文** | [English](Delete-Data)
若Where条件为空的时候执行仅返回0或默认值不执行真正的SQL删除操作
删除是一个非常危险的操作FreeSql 对删除支持并不强大,默认仅支持单表、且有条件的删除方法
`Where` 条件为空的时候执行,仅返回 `0` 或默认值,不执行真正的 SQL 删除操作。
```csharp
static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
@@ -21,13 +23,14 @@ class Topic {
```csharp
fsql.Delete<Topic>(object dywhere)
```
dywhere 支持
`dywhere` 支持:
* 主键值
* new[] { 主键值1, 主键值2 }
* Topic对象
* new[] { Topic对象1, Topic对象2 }
* new { id = 1 }
* `new[] { 主键值1, 主键值2 }`
* Topic 对象
* `new[] { Topic对象1, Topic对象2 }`
* `new { id = 1 }`
```csharp
var t1 = fsql.Delete<Topic>(new[] { 1, 2 }).ToSql();
@@ -45,7 +48,7 @@ var t4 = fsql.Delete<Topic>(new { id = 1 }).ToSql();
## 删除条件
> 出于安全考虑没有条件不执行删除动作避免误删除全表数据。删除全表数据fsql.Delete\<T\>().Where("1=1").ExecuteAffrows()
> 出于安全考虑,没有条件不执行删除动作,避免误删除全表数据。删除全表数据:`fsql.Delete<T>().Where("1=1").ExecuteAffrows()`
```csharp
var t5 = fsql.Delete<Topic>().Where(a => a.Id == 1).ToSql();
@@ -66,7 +69,7 @@ var t8 = fsql.Delete<Topic>().Where(items).ToSql();
## ISelect.ToDelete 高级删除
IDelete 默认不支持导航对象多表关联等。ISelect.ToDelete 可将查询转为 IDelete以便使用导航对象删除数据如下
`IDelete` 默认不支持导航对象,多表关联等。`ISelect.ToDelete` 可将查询转为 `IDelete`,以便使用导航对象删除数据,如下:
```csharp
fsql.Select<T1>().Where(a => a.Options.xxx == 1).ToDelete().ExecuteAffrows();
@@ -80,7 +83,7 @@ DELETE FROM `T1` WHERE id in (select a.id from T1 a left join Options b on b.t1i
复杂删除使用此方法的好处:
- 删除前可预览测试数据,防止错误删除操作;
- 支持复杂的删除操作例如ISelect 上使用 Limit(10) 删除附合条件的前 10 条记录;
- 支持复杂的删除操作,例如:`ISelect` 上使用 `Limit(10)` 删除附合条件的前 10 条记录;
## 参考资料