导航更新实现软删除 返回

SqlSugar 沟通中
8 491
该叫什么 fry 发布于2025/11/28
悬赏:0 飞吻

需求: 每个表都有IsDeleted字段标记是否删除,导航更新如何实现主表和子表的软删除(都只更新IsDeleted字段-软删)

类似于连级修改主表和字表的某一个字段,作假删除处理

请给一个写法


思考:如果系统中所有的表都有一些公共的审计字段,那么导航修改的时候是否可以批量去修改这些公共的字段值,而不是查出来一个一个去赋值,再做更新

热忱回答8

  • fry 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 fate sta VIP0
    2025/12/3

    逻辑删除一般删除主表就行了。子表不需要删除。

    0 回复
  • fate sta fate sta VIP0
    2025/12/3

    如果用导航更新 ,先查询然后修改查询后的Isdeleted在 更新 (一对多要启用更新)

    0 回复
  • fry fry VIP0
    2025/12/3

    @fate sta:只删除主表,当查询子表的时候是不是都要验证主表对应的数据是否删除?

    0 回复
  • fry fry VIP0
    2025/12/3

    @fate sta:你说的这种我知道,但是这样很容易遗漏,而且如果有6-7个关系表,查出来,每个关系表要循环一次赋值,在导航更新

    0 回复
  • fate sta fate sta VIP0
    2025/12/4

    @fry:删主表情况,查询子表只要innser join主表就行了。这样就能过滤掉无用子表

    0 回复
  • fate sta fate sta VIP0
    2025/12/4

    正常情况不会单独查子表。一般只查主表。

    0 回复
  • fry fry VIP0
    2025/12/4

    @fate sta:这种情况时有的,如下:

    表A--->表B--->表C---->表D


    一个A对应多个B,一个B对应多个C,一个C对应多个D


    删除了A里的数据,那么查询D列表的时候必须要确认C,B,A三个表都是否删除


    就是因为这个原因,希望能找到导航软删除的简单方法(连级软删除)


    0 回复