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

为所有继承EntityBase的类添加EF查询过滤器遇错,求非循环实现方案

问题:为所有EntityBase子类应用EF查询过滤器时出现枚举器错误,如何无循环实现?

我有一组均继承自EntityBase的类,示例代码如下:

class Blog: EntityBase
{
  string owner {get;set;}
}

class Post: EntityBase{
  Blog blog {get;set;}
  string title {get;set;}
}

abstract class EntityBase{
 long Id {get;set;}
 bool IsArchived {get;set;}
}

我想要为所有继承自EntityBase类的记录应用EF查询过滤器,但创建实体迁移时出现错误:

Collection was modified after the enumerator was instantiated.

当前使用的代码如下:

override protected void OnModelCreating(ModelBuilder modelBuilder)
{
    foreach (var entityType in modelBuilder.Model.GetEntityTypes().Where(t => t.ClrType.IsSubclassOf(typeof(EntityBase))))
    {
    modelBuilder.Entity(
        typeof(EntityBase),
        entity => 
        { 
            entity.HasQueryFilter((EntityBase e) => e.IsArchived == false);
        });
    }
}

请问如何不用循环实现该修改?


注意: 我已使用如下循环代码设置默认值,且运行正常:

foreach (var entityType in modelBuilder.Model.GetEntityTypes().Where(t => t.ClrType.IsSubclassOf(typeof(EntityBase))))
{
    modelBuilder.Entity(entityType.Name, x => {
        x.Property(nameof(EntityBase.IsArchived))
                            .HasDefaultValue(false);
    });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 21:07:07