鉴于以下内容:
public class Department
{
public int DepartmentID { get; set; }
public string Name { get; set; }
public virtual ICollection<Course> Courses { get; set; }
}
public class Course
{
public int CourseID { get; set; }
public string Title { get; set; }
public int Credits { get; set; }
public int DepartmentID { get; set; }
public virtual Department Department { get; set; }
}
如果我关闭延迟加载并发出以下内容:
var departments = _DepartmentRepository.GetAll()
.Include(c => c.courses);
然后我在里面找到一个Department对象的答案。
有没有办法可以包含课程而不是取回部门对象。例如,我可以只包含一个级别(课程)。
答案 0 :(得分:0)
你只是包括一个级别。课程中的部门对象就在那里,因为EF已经完成了一些关系修正,因此您可以从课程导航到部门。
如果您不想要部门,那么只需直接获得课程。那是context.Courses.ToList();
或通过课程回购,如果你有一个。
答案 1 :(得分:0)
获取实体时,EF会自动填充已跟踪目标对象的导航属性。这意味着如果您这样说:
// Load the department with a PK of 1
_DepartmentRepository.Find(1);
然后,使用相同的上下文,例如:
// Load a course with PK of 17
_CourseRepository.Find(17);
如果此课程部门ID为1,则即使您未指定包含,EF也会自动填充其部门导航属性。您可以通过不将Department导航属性设置为虚拟来停止此行为。