Code First 指定外鍵名稱


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM