【发布时间】:2018-03-21 15:25:48
【问题描述】:
我与实体框架建立了多对多关系,如下所示:
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 对象为空。但我想访问 Class 对象中的数据,以便查看所有 Student 班级的名称和位置。
有没有办法将它也包含在内,还是我需要进行单独的数据库调用?
【问题讨论】:
-
Student不能是null与此查询。要获得Class,您需要ThenIncude(sc => sc.Class) -
@IvanStoev - 我不能做
ThenInclude(sc => sc.Class)因为StudentClasses对象是一个集合 -
是的,你可以。见EF Core Second level ThenInclude missworks。现在在documentation中特别提到——Including multiple levels下的注
-
你是对的,这确实有效。尽管出于某种原因,Intellisense 没有接收到它,但它确实有效。非常感谢!
标签: c# entity-framework linq .net-core entity-framework-core