C# 在导航属性的Ef Core中使用父项而不是实体类型

C# 在导航属性的Ef Core中使用父项而不是实体类型,c#,entity-framework-core,C#,Entity Framework Core,我想将基础结构层中实体类型的父级用于导航属性,并在全局查询筛选器中访问它,但我得到了 无法为实体类型AppointmentModel指定筛选器表达式x=>Convert(x.Status,StatusModel).IsActive。筛选器只能应用于层次结构中的根实体类型 我解决不了 我的代码是: protected override void OnModelCreating(ModelBuilder modelBuilder) { var entities = modelBuilder.

我想将基础结构层中实体类型的父级用于导航属性,并在全局查询筛选器中访问它,但我得到了

无法为实体类型
AppointmentModel
指定筛选器表达式
x=>Convert(x.Status,StatusModel).IsActive
。筛选器只能应用于层次结构中的根实体类型

我解决不了

我的代码是:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    var entities = modelBuilder.Model.GetEntityTypes();
    foreach (var entity in entities)
    {
        if (entity.BaseType?.ClrType == typeof(ModelBase) || entity.BaseType?.ClrType == typeof(EntityBase<Guid>)&&entity.ClrType!=typeof(StatusModel))
        { 
            modelBuilder.Entity<StatusModel>().HasMany(entity.GetType()).WithOne(nameof(ModelBase.Status))
                .HasForeignKey(nameof(ModelBase.StatusId)).IsRequired().OnDelete(DeleteBehavior.Restrict);
            MethodInfo method = GetType().GetMethod(nameof(ConvertExp)).MakeGenericMethod(entity.ClrType);
            modelBuilder.Entity(entity.ClrType).HasQueryFilter((LambdaExpression) method.Invoke(this, new object[] { }));
        }
    }
}

但它不能过滤状态模型

这只是一个已知的全局查询筛选器限制,如异常状态所示。
public Expression<Func<TEntity, bool>> ConvertExp<TEntity>() where TEntity : ModelBase
{
    return (x => ((StatusModel)x.Status).IsActive);
}
public abstract class ModelBase {
    public Guid? StatusId { get; set; }
    public EntityBase<Guid> Status { get; set; }
}