You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Entity Framework .NET加载模型时排除软删除记录的实现

自动排除软删除记录的实现方案

下面针对不同技术场景给出直接的实现方式:

  • Entity Framework Core 场景

    • 利用全局查询筛选器,在模型构建阶段配置,让所有默认查询自动排除Deleted On不为空的记录:
      protected override void OnModelCreating(ModelBuilder modelBuilder)
      {
          modelBuilder.Entity<你的实体类名称>()
              .HasQueryFilter(entity => entity.DeletedOn == null);
      }
      
    • 配置后,无论刷新模型还是通过DbSet查询,都会自动过滤软删除数据;如果需要临时查看已删除记录,可在查询后追加IgnoreQueryFilters()方法。
  • Django ORM 场景

    • 自定义模型管理器,重写查询方法默认过滤软删除记录:
      from django.db import models
      
      class ActiveRecordManager(models.Manager):
          def get_queryset(self):
              return super().get_queryset().filter(deleted_on__isnull=True)
      
      class 你的模型类(models.Model):
          # 其他字段定义
          deleted_on = models.DateTimeField(null=True, blank=True)
          objects = ActiveRecordManager()  # 用于UI查询的默认管理器
          all_records = models.Manager()   # 保留原始管理器用于查看全量数据
      
    • UI调用你的模型类.objects.all()时,只会返回未删除的记录;如需查看所有数据,使用all_records管理器即可。
  • 原生SQL/数据库视图场景

    • 如果未使用ORM,可创建数据库视图封装过滤逻辑,UI直接查询视图:
      CREATE VIEW 视图名称 AS
      SELECT * FROM 你的数据表名称
      WHERE [Deleted On] IS NULL;
      
    • 后续UI所有数据请求直接访问该视图,无需每次手动添加过滤条件。

内容的提问来源于stack exchange,提问作者LordRofticus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:49:59