指定類外鍵有注釋(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的方法等待補充----------------------
