0
我坚持过去几天没有太多进展的这一要求。带有IQueryable实体的DbContext编写自定义查询
我们的数据库层是通过DbContext与存储库,工作单元模式处理的。 它在poko类上生成查询。
public virtual IQueryable<ENT> All(params Expression<Func<ENT, object>>[] includes)
{
IQueryable<ENT> query = Set;
query = AddIncludesToQry(query, includes);
return query;
}
protected DbSet<ENT> Set
{
get { return Ctxt.Set<ENT>(); }
}
protected virtual IQueryable<ENT> AddIncludesToQry(IQueryable<ENT> query, params Expression<Func<ENT, object>>[] includes)
{
Expression<Func<ENT, object>>[] includesToUse = d2l.NullOrEmpty(includes)
? DefaultIncludes
: includes;
if (d2l.NullOrEmpty(includesToUse)) return query;
foreach (var incl in includesToUse)
{
query = query.Include(incl);
}
return query;
}
ENT =波科模型类
AddIncludesToQry =添加where子句中的条件。
这将通过过滤where条件来返回整个表数据(在数据库中将有一个带有poko类名的表)。
但是,我希望得到的数据有时几乎不同。 例如,我想要限制选择列表以返回deptName,Count(雇员) 这只需要选择列表中的两列,并按deptName分组。
我不知道如何使用这种模式,仍然可以IQueryable查询来实现这一点。
有人可以提出任何想法吗?