【问题标题】:Entity Framework Core include filterEntity Framework Core 包含过滤器
【发布时间】:2016-12-10 01:00:04
【问题描述】:

我是 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);

此查询引发错误,因为我无法在 ExerciseClinicalPicture 的集合上调用 ClinicalPictureId

希望我的问题是这样的。这是我第一次在 Stackoverflow 上提问。

非常感谢您的帮助

【问题讨论】:

    标签: c# asp.net-core entity-framework-core


    【解决方案1】:

    改变这个:

    exercises = _context.Exercise.Where(e => e.ExerciseClinicalPicture.ClinicalPictureId == id)
    

    到这里:

    exercises = _context.Exercise.Where(e => e.ExerciseClinicalPicture.Any(ec => ec.ExerciseId == id))
    

    基本上,“获取锻炼的任何锻炼临床图片包含给定锻炼 ID 的锻炼。” 在您的模型中,ExerciseClinicalPicture 是一个集合。你必须再次深入研究它。您的错误是该属性不存在,因为它是一个集合。

    这就是您查询它的方式。然后你就可以像往常一样进行包含了。

    【讨论】:

    • 非常感谢。当我想在 ClinicalPicture 中过滤姓名时,您能告诉我查询吗?
    • _context.Exercise.Where(e => e.ExerciseClinicalPicture.Any(ec => ec.ClinicalPicture.ClinicalPictureName == "名称"))
    • 非常感谢您的帮助。
    • @TheAnathema 仅当您不想从父对象检索信息时才有效。你知道即使子列表不满足上述条件,我怎样才能始终获取父对象吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    相关资源
    最近更新 更多