如何在不使用IQueryable的情况下从数据库返回部分数据?

时间:2016-10-01 14:39:59

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

我已经在存储库中应用了一段时间的DTO(MVC 5 + EF 6.1),因为它们是我从数据库中提取部分数据(选择某些列)的唯一方法。令我惊讶的是,最近的一些研究this is bad

我能想到的唯一解决方案是使用IQueryable (and let's not start with this)(另外,我很可能在将其映射到DTO之前先处理上下文):

问题是,如何在不使用IQueryable的情况下从数据库中检索部分数据?

这就是我没有遇到任何问题的方式:

  public async Task<List<ParticipantIdsOnly>> GetRegisteredParticipantsIdsOnlyAsync(int tournamentId)
        {

            return await _dbRepositories.TournamentRepository.Where(x => x.TournamentId == tournamentId)
            .SelectMany(y => y.Participants.Where(x => x.Status == ParticipantStatus.Active)
                            .Select(x => new ParticipantIdsOnly { Id = x.Id, ProviderPlayerId = x.ProviderPlayerId }))
            .ToListAsync();

        }

BTW,如果我尝试&#34; newing&#34;使用select的实体,我得到一个LINQ to Entities错误。

0 个答案:

没有答案