为所有继承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
相关产品推荐
相关产品推荐

