EF之Code First設置主外鍵關系(一)


指定類外鍵有注釋(DataAnnotation)和FluentAPI兩種方式,下面我們主要使用DataAnnotation指定外鍵關系 
第一種方式

//1-指定導航屬性,會自動生成外鍵,命名規則為:“對象名稱_主鍵名”
 public class TUsers
    {
        [Key]
        public int UserId { get; set; }

        public string Account { get; set; }

        public string Password { get; set; }

        public DateTime CreateDate { get; set; }

        public List<TUsersRoles> TUsersRolesList { get; set; }
    }
     public class TUsersExtInfo
    {
        [Key]
        public int id { get; set; }

        public virtual TUsers Users { get; set; }//生產的外鍵名稱是Users_UserId,格式為"對象名稱_主角名稱"
    }

生成的表結構如下:

第二種方法:

//2-默認情況下與導航屬性的主鍵名稱相同的字段會自動被標記為外鍵,
public class TUsers
    {
        [Key]
        public int UserId { get; set; }

        public string Account { get; set; }

        public string Password { get; set; }

        public DateTime CreateDate { get; set; }
    }
     public class TUsersExtInfo
    {
        [Key]
        public int id { get; set; }

        public int UserID { get; set; }
        public virtual TUsers Users { get; set; }//如果沒有聲明TUsers對象,則UserID是一個普通的字段,沒有外鍵關系
    }

第三種方法:可指定生成的數據庫中的列名。

public class TUsers
    {
        [Key]
        public int UserId { get; set; }

        public string Account { get; set; }

        public string Password { get; set; }

        public DateTime CreateDate { get; set; }
    }
    public class TUsersExtInfo
    {
        [Key]
        public int id { get; set; }

        public int TUsers_Id { get; set; }
        [ForeignKey("TUsers_Id")]
        public virtual TUsers Users { get; set; }
    }

第四種方法:可指定生成的數據庫中的列名

//方式2的升級版,與導航屬性的主鍵名稱相同的字段會自動被標記為外鍵,然后指定字段對應的數據庫中的列名
public class TUsers
    {
        [Key]
        public int UserId { get; set; }

        public string Account { get; set; }

        public string Password { get; set; }

        public DateTime CreateDate { get; set; }
    }
     public class TUsersExtInfo
    {
        [Key]
        public int id { get; set; }

        [Column("TUsers_Id")]
        public int UserId { get; set; }
        public virtual TUsers Users { get; set; }
    }

 


免責聲明!

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



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