2013-06-27 50 views
0

我正在使用實體框架5與Code First和延遲加載禁用。鑑於以下幾點:爲什麼我需要在我的子類中使用EF5的虛擬屬性?

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; } 
} 

// Mapping Relationships for Course 

<code here> 
this.HasRequired(t => t.Department) 
.WithMany(t => t.Courses) 
.HasForeignKey(d => d.DepartmentID); 

有人可以解釋爲什麼我會需要有:如果我完全刪除這一行

public virtual Department Department { get; set; } 

會發生什麼?我不能做什麼?據我所見,我唯一不能做的就是使用Entity Framework來檢查我的外鍵。不過,我已經在數據庫中設置了這個設置,所以我仍然會從Db中得到一個錯誤。

回答

1

部門屬性作爲指向某個課程的特定部門的鏈接而存在。 它可以是一對多關係的一部分,它使您能夠訪問課程中的部門。

+0

但是我不知道,因爲我有DepartmentID? – Alan2

+0

DepartmentId很有用,但Department屬性包含Department實體的所有列。如果您需要了解有關部門的詳細信息(名稱等),那麼這很方便 - 在使用課程時 – TGH

1

它包含了你的Department信息,Depertment NameCourses information.I認爲你可以將其刪除,因爲Department的信息,你也可以通過搜索其DepartmentID訪問。但保留它會更好。

+0

謝謝。我確實嘗試刪除它,但它給了我一個錯誤的映射。我添加了映射的代碼,以便您可以看到。如果我刪除該行,是否有另一種方法可以執行映射? – Alan2

相關問題