Я застрял с этим требованием за последние пару дней без особого прогресса.
Наш уровень базы данных обрабатывается через 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 = класс модели poko
AddIncludesToQry = Добавляет условие в предложение where.
Это вернет все данные таблицы (в базе данных будет таблица с именем класса poko) путем фильтрации условий where.
Однако я хочу получить данные иногда немного по-другому. Например, я хочу ограничить список выбора, чтобы он возвращал имя отдела, количество (сотрудник). Для этого требуется всего два столбца в списке выбора и группировка по имени отдела.
Я не уверен, как я могу добиться этого, используя этот шаблон, который все еще может быть запросом IQueryable.
может кто-нибудь посоветовать какие-нибудь мысли?