2

考虑以下几点:我可以限制.include通过LINQ和Entity Framework 5添加了多少级别?

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

你找到了实现这个目标的最佳方法吗?我正在努力。 – shaikhspear

回答

0

你只是包括一个级别。课程中的部门对象在那里,因为EF已经完成了一些关系修正,以便您可以从课程导航到部门。

如果你不想要部门,那么直接获得课程。那是context.Courses.ToList();或通过课程回购,如果你有。

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都将自动填充这是部导航属性即使你没有指定包含。您可以通过不使虚拟部门导航属性停止此行为。

相关问题