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都將自動填充這是部導航屬性即使你沒有指定包含。您可以通過不使虛擬部門導航屬性停止此行爲。

相關問題