標籤:
指定類外鍵有注釋(DataAnnotation)和FluentAPI兩種方式,
目前掌握的知識我們先把DataAnnotation可用的四種方式總結如下
第一種方法:
//1-指定導覽屬性,會自動產生外鍵,命名規則為:“表名_主鍵名”//這種方式相容性非常好,稍後需要總結的關於一個類中出現兩個或者多個相同類屬性的時候就使用的這種方式,而下面的第三種方式就不成功,會出現錯誤,具體細節在下一篇部落格中介紹 public class User { //[Key] public int UserID { get; set; } public string Name { get; set; } } public class UserExtInfo { public int UserExtInfoID { get; set; } //1-產生外鍵:User_UserID public virtual User User { get; set; } }
第二種方法:
//2-預設情況下與導覽屬性的主鍵名稱相同的欄位會自動被標記為外鍵, public class User { public int UserID { get; set; } public string Name { get; set; } } public class UserExtInfo { //2-產生外鍵:UserID public int UserID { get; set; } public virtual User User { get; set; } } }
第三種方法:可指定產生的資料庫中的列名。
//3-通過[ForeignKey]標記指定實體類的屬性為外鍵, public class User { public int UserID { get; set; } public string Name { get; set; } } public class UserExtInfo { //3-產生外鍵:F_UserID public int F_UserID { get; set; } [ForeignKey("F_UserID")] public virtual User User { get; set; } }
第四種方法:可指定產生的資料庫中的列名。
//方式2的升級版,與導覽屬性的主鍵名稱相同的欄位會自動被標記為外鍵,然後指定欄位對應的資料庫中的列名 public class User { public int UserID { get; set; } public string Name { get; set; } } public class UserExtInfo { //4-產生外鍵:F_UserID [Column("F_UserID")] public int UserID { get; set; } public virtual User User { get; set; } }
FluentAPI的方法等待補充----------------------
Code First 指定外鍵名稱