首页 > 解决方案 > EF Core AutoMapper:未应用包含中的过滤器嵌套集合

问题描述

我正在使用 EF Core 5。我想进行查询并ProjectTo用于映射我的结​​果。但我需要像这样在嵌套集合中创建一个过滤器:

 var questions = await _context
      .MedicalDatas
      .Include(p => p.MedicalDataItems)
      .Include(p => p.MedicalAnswers.Where(x => x.AppUserId == userId))
      .ProjectTo<MedicalDataDto>(_cp)
      .ToListAsync();

2 个导航属性包含在目标类型中,但是当我检查 EF Core 生成的 SQL 时,没有where子句,它从数据库中选择所有医疗答案。

但是没有投影,它按预期工作。

这里有什么问题?

标签: asp.net-core.net-coreentity-framework-coreautomapper

解决方案


您不需要包含projectto 中

var questions = await _context
      .MedicalDatas
      .Where(p => p.MedicalAnswers.Any(x => x.AppUserId == userId))
      .ProjectTo<MedicalDataDto>(_cp)
      .ToListAsync();

推荐阅读