2016-02-15 28 views
0

我一直在閱讀和查看大量關於EF的資源,但是 - 有時 - 我看到一些例子沒有列出特定實例的外鍵ID。其他時候,他們把它放進去。將它放入或取出的含義是什麼?實體框架 - 離開外國證號列的影響列

例如:

public class Student 
{ 
    public int TeacherID { get; set; } 
    [Required] 
    public Teacher Teacher { get; set; } 
} 

public class Teacher 
{ 
    public virtual List<Student> Students { get; set; } 
} 

public class Student 
{ 
    [Required] 
    public Teacher Teacher { get; set; } 
} 

public class Teacher 
{ 
    public virtual List<Student> Students { get; set; } 
} 
+0

老師仍然需要一把鑰匙。在第二個FK場景中,EF將自動創建一個名爲Teacher_Id的FK。 –

+0

當把鑰匙丟掉時,你失去了對它的控制。但是,EF始終會創建FK以匹配導航屬性,否則這些屬性將無法訪問 – DevilSuichiro

+0

數據庫表仍需要外鍵列。將它從EF模型中排除的含義是,它使EF確定關係更加困難且容易出錯。出於這個原因,我幾乎總是使用它們。 – danludwig

回答

0

的表和實體EF使用時總是需要的主鍵。 關於外鍵 - 數據庫中的依賴表仍然需要外鍵,但相應的實體不必具有外鍵列的屬性。如果你不在模型中包含外鍵屬性,你將最終擁有獨立關聯。 This post描述了獨立協會和外國關鍵協會之間的差異。