C# 按属性/类型列出的EF预过滤器表

C# 按属性/类型列出的EF预过滤器表,c#,.net,asp.net-mvc,linq,entity-framework,C#,.net,Asp.net Mvc,Linq,Entity Framework,我正在使用EF6,并使用代码优先迁移 我以前有一个表Requests,它只包含一种类型的请求,现在我开始在其中添加不同类型的请求,并且总是在使用LINQ查询时,我必须这样做: _repository.Requests.Where(r => r.Type == Type.BestRequest &&......) _repository.Requests.Where(r => r.Type == Type.AwesomeRequest &&......)

我正在使用EF6,并使用代码优先迁移

我以前有一个表
Requests
,它只包含一种类型的请求,现在我开始在其中添加不同类型的请求,并且总是在使用LINQ查询时,我必须这样做:

_repository.Requests.Where(r => r.Type == Type.BestRequest &&......)
_repository.Requests.Where(r => r.Type == Type.AwesomeRequest &&......)
在我的
DbContext
中,我有一个
DbSet
,它总是返回:

public DbSet<Request> Requests { get; set; }
但我仍然希望数据库中有一个表,命名为Requests。您可以查看此表


我以前用过它,它完全符合我的要求。。但问题是我总是不得不“应用”过滤器

我在我的
IRepository
中创建了额外的属性,并在DbContext中实现了它们,如下所示

    IQueryable<Request> IRepository.BestRequests {
        get { return Requests.Where(r => r.Type == Type.BestRequest); }
    }


    IQueryable<Request> IRepository.AwesomeRequests {
        get { return Requests.Where(r => r.Type == Type.AwesomeRequest); }
    }
IQueryable IRepository.BestRequests{
获取{return Requests.Where(r=>r.Type==Type.BestRequest);}
}
IQueryable IRepository.AwesomeRequests{
获取{return Requests.Where(r=>r.Type==Type.AwesomeRequest);}
}

您使用的是数据库中具有鉴别器列的TPH继承吗?不,我没有使用它。您已经有了存储库。为什么不提供类似于
\u repository.BestRequests
?@YuliamChandra类型只是一个枚举。@GertArnold我不确定我是否理解。然后,
BestRequests
返回什么?我只有
Requests
表,没有名为
BestRequests
    IQueryable<Request> IRepository.BestRequests {
        get { return Requests.Where(r => r.Type == Type.BestRequest); }
    }


    IQueryable<Request> IRepository.AwesomeRequests {
        get { return Requests.Where(r => r.Type == Type.AwesomeRequest); }
    }