我是C#和Entity Framework Core的新手。我已经搜索了很多这个问题,但没有找到答案。我有以下三个模型(我简化了它):
public class Exercise
{
public int ExerciseId { get; set; }
[Required]
public string ExerciseName { get; set; }
public string Filename { get; set; }
public ICollection<ExerciseClinicalPicture> ExerciseClinicalPicture { get; set; }
}
public class ClinicalPicture
{
[Key]
public int ClinicalPictureId { get; set; }
[Required]
[Display(Name = "Krankheitsbild")]
public string ClinicalPictureName { get; set; }
public ICollection<ExerciseClinicalPicture> ExerciseClinicalPicture { get; set; }
}
public class ExerciseClinicalPicture
{
[Key]
public int ExerciseClinicalPictureId { get; set; }
public int ExerciseId { get; set; }
public Exercise Exercise { get; set; }
public int ClinicalPictureId { get; set; }
public ClinicalPicture ClinicalPicture { get; set; }
}
现在我想要一个查询,其中结果是与某个临床图片相关联的所有练习的集合,并且包含clinicalPicture
。
这样的事情:
int id = 1;
exercises = _context.Exercise.Where(e => e.ExerciseClinicalPicture.ClinicalPictureId == id)
.Include(m => m.ExerciseClinicalPicture)
.ThenInclude(m => m.ClinicalPicture);
此查询引发错误,因为我无法在ClinicalPictureId
的集合上调用ExerciseClinicalPicture
。
希望我的问题可以这样。这是我第一次在Stackoverflow上提问。
非常感谢你的帮助
答案 0 :(得分:2)
改变这个:
exercises = _context.Exercise.Where(e => e.ExerciseClinicalPicture.ClinicalPictureId == id)
到此:
exercises = _context.Exercise.Where(e => e.ExerciseClinicalPicture.Any(ec => ec.ExerciseId == id))
基本上,&#34;进行锻炼,其中锻炼的任何运动临床图片都包含给定的锻炼ID。&#34; 在您的模型中,ExerciseClinicalPicture是一个集合。你必须再次深入研究它。您的错误是该属性不存在,因为它是一个集合。
这就是您查询它的方式。然后你就可以像往常那样做你的包括。