EF按属性/类型执行预过滤表

时间:2014-09-12 08:54:41

标签: c# .net asp.net-mvc linq entity-framework

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

之前我有一个表Requests,它只包含一种类型的请求,现在我开始在那里添加不同类型的请求,并且总是在用LINQ查询时,我必须做这样的事情:< / p>

_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 => ......)

但我仍然希望在数据库中有单个表,名为Requests。

2 个答案:

答案 0 :(得分:1)

您可以查看此link

我之前使用它并且它完全符合我的要求..但问题是我总是必须&#34;应用&#34;过滤器。

答案 1 :(得分:0)

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