导航更新实现软删除 返回
需求: 每个表都有IsDeleted字段标记是否删除,导航更新如何实现主表和子表的软删除(都只更新IsDeleted字段-软删)
类似于连级修改主表和字表的某一个字段,作假删除处理
请给一个写法
思考:如果系统中所有的表都有一些公共的审计字段,那么导航修改的时候是否可以批量去修改这些公共的字段值,而不是查出来一个一个去赋值,再做更新
热忱回答(8)
-
fry VIP0
2025/12/3伪代码类似于:
var update = UpdateNav(data)
.Includes(x => x.A)
.Includes(x => x.B, xx => xx.C)
.Includes(x => x.D)
.SetCloumn(x => x.isDeleted == true)
.ExceuteCommandAsync();
执行的Sql: update tabeA set isDeleted =1 where ....
update tabeB set isDeleted =1 where ....
update tabeC set isDeleted =1 where ....
update tabeD set isDeleted =1 where ....
update data set isDeleted =1 where ....
0 回复 -
fate sta VIP0
2025/12/3逻辑删除一般删除主表就行了。子表不需要删除。
0 回复 -
fate sta VIP0
2025/12/3如果用导航更新 ,先查询然后修改查询后的Isdeleted在 更新 (一对多要启用更新)
0 回复 -
fry VIP0
2025/12/3@fate sta:只删除主表,当查询子表的时候是不是都要验证主表对应的数据是否删除?
0 回复 -
fry VIP0
2025/12/3@fate sta:你说的这种我知道,但是这样很容易遗漏,而且如果有6-7个关系表,查出来,每个关系表要循环一次赋值,在导航更新
0 回复 -
fate sta VIP0
2025/12/4@fry:删主表情况,查询子表只要innser join主表就行了。这样就能过滤掉无用子表
0 回复 -
fate sta VIP0
2025/12/4正常情况不会单独查子表。一般只查主表。
0 回复 -
fry VIP0
2025/12/4@fate sta:这种情况时有的,如下:
表A--->表B--->表C---->表D
一个A对应多个B,一个B对应多个C,一个C对应多个D
删除了A里的数据,那么查询D列表的时候必须要确认C,B,A三个表都是否删除
就是因为这个原因,希望能找到导航软删除的简单方法(连级软删除)
0 回复