【发布时间】:2021-07-19 20:42:53
【问题描述】:
我正在尝试在我的基础存储库中获取一种方法以允许动态包含。考虑以下我想要的直接版本:
public async Task<IList<Presentation>> All()
{
return await DbSet
.Include(x => x.Questions)
.ToListAsync();
}
该函数按预期工作 - Questions 包含在结果中。
现在在基础存储库中考虑这个方法:
public virtual async Task<IPagedList<TEntity>> AllAsync(int? page, int? pageSize, Action<IQueryable<TEntity>> includeAction = null)
{
var index = page ?? 1;
var size = pageSize ?? 25;
var skipRows = (index - 1) * size;
var queryable = DbSet.Skip(skipRows).Take(size);
includeAction?.Invoke(queryable);
var items = await queryable.ToListAsync();
return new PagedList<TEntity>(index, size, items);
}
我这样称呼它:
functionResult.Presentations = await presentationRepository.AllAsync(request.Page, null, set => set.Include(x => x.Questions));
从我的角度来看,我正在做同样的事情,但由于某种原因,Questions 不包含在该结果中。
注意:我尝试将.Skip(skipRows).Take(size) 移动到queryable 部分,这样Include 只适用于DbSet,就像这样,并且没有变化结果。
var items = await queryable.Skip(skipRows).Take(size).ToListAsync();
【问题讨论】:
标签: c# .net .net-core entity-framework-core