C# 按属性/类型列出的EF预过滤器表
我正在使用EF6,并使用代码优先迁移 我以前有一个表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 &&......)
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); }
}