EF按属性/类型预筛选表

本文关键字:筛选 类型 属性 EF | 更新日期: 2023-09-27 18:21:34

我正在使用EF 6,并使用代码优先迁移。

我以前有一个表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; }

有没有一种方法可以通过这样做来预过滤请求::

_repository.BestRequests.Where(r => ......)

但我仍然希望数据库中有一个名为"请求"的表

EF按属性/类型预筛选表

您可以查看此链接

我以前用过它,它正是我想要的。。但问题是,我总是要"应用"过滤器。

我在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); }
    }