在多对多关系中包括相关实体

时间:2018-03-21 15:25:49

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

我与Entity Framework建立了多对多关系,如下所示:

public class Student
{
    public int StudentId { get; set; }
    public string Name { get; set; }
    public DateTime Birthday { get; set; }

    public ICollection<StudentClass> StudentClasses { get; set; }
}

public class Class
{
    public int ClassId { get; set; }
    public string Name { get; set; }
    public string Location { get; set; }

    public ICollection<StudentClass> StudentClasses { get; set; }
}

public class StudentClass
{
    public int StudentId { get; set; }
    public Student Student { get; set; }

    public int ClassId { get; set; }
    public Class Class { get; set; }
}

这很有效,我正在努力让学生,但也得到他们相关的课程。我有这个:

var studentsWithClasses = await _dbContext.Students
    .Include(s => s.StudentClasses)
    .ToListAsync();

这使我获得了StudentClasses集合中的StudentId和ClassId,但Class对象为null。但我想访问Class对象中的数据,以便我可以看到所有Student Class的名称和位置。

是否有办法包含它,或者我是否需要进行单独的数据库调用?

1 个答案:

答案 0 :(得分:0)

您可以使用字符串Include(请注意,intellisense不会告诉您该属性是否实际存在)。

var studentsWithClasses = await _dbContext.Students
    .Include("StudentClasses.Class")
    .ToListAsync();