2016-10-22 75 views
0

我想使用實體框架代碼第一種方法創建1-n關係。以下是我的課代碼第一種方法不創建外鍵

public class User 
{ 

    [Key] 
    public int UserID { get; set; } 


    //public virtual Vote Vote { get; set; } 
    [Required] 
    public string Name { get; set; } 
    [Required] 
    public string Email { get; set; } 
    [Required] 
    public string Bio { get; set; } 
    [Required] 
    public string Education { get; set; } 
    [Required] 
    public string Experience { get; set; } 

    public string Password { get; set; } 

} 

和下面是我的第二類

public class Vote 
{ 
    [Required] 
    [Key] 
    public int VoteID { get; set; } 

    [ForeignKey("UserID")] 
    [Required] 
    public virtual User User { get; set; } 

    //public virtual int UserID { get; set; } 

    [Required] 
    public int VoteCount { get; set; } 
    [Required] 

    public int UserID { get; set; } 


} 

用戶和票和1 n的關係,在我的情況下,我的意思是,用戶名應在投票表的外鍵。但是,當我完成創建分貝以下命令

enable-migrations -ContextTypeName ProfileOne.PO -Force 

    Add-migration PO 

    update-database 

我沒有得到任何外鍵或列名UserID

任何幫助可以理解爲什麼我不能達到的效果。

+1

這應該創建一個'用戶ID'的投票表。但關係是1-n(用戶有很多票),而不是1-1。如果'UserID'沒有被創建,代碼中的其他錯誤是我們看不到的。 –

+0

我相信在這種情況下,EF期望一對一的關係。取決於EF版本,該屬性可能會被忽略,因爲約定在這種關係中將PK用作FK。 – DevilSuichiro

+0

這應該創建外鍵。我們在這裏缺少部分難題。很容易爲這種問題創建一個[MCVE]。 –

回答

1

嘗試使用以下方法:

public class User 
{ 
    [Key] 
    public int UserID { get; set; } 

    [Required] 
    public string Name { get; set; } 

    [Required] 
    public string Email { get; set; } 

    [Required] 
    public string Bio { get; set; } 

    [Required] 
    public string Education { get; set; } 

    [Required] 
    public string Experience { get; set; } 

    public string Password { get; set; }   


    //Navigation properties 
    public virtual ICollection<Vote> Votes { get; set; } 
} 


public class Vote 
{ 
    [Key] 
    public int VoteID { get; set; } 

    [Required] 
    public int VoteCount { get; set; } 


    //Foreign key for User 
    [Required] 
    public int UserID { get; set; } 

    //Navigation properties 
    public virtual User User { get; set; } 
} 


欲瞭解更多信息,看看Entity Relationships。希望這有助於...

-1

修改你的類的樣子:

public class User 
{ 
    [Key] 
    public int UserID { get; set; } 

    [Required] 
    public string Name { get; set; } 

    [Required] 
    public string Email { get; set; } 

    [Required] 
    public string Bio { get; set; } 

    [Required] 
    public string Education { get; set; } 

    [Required] 
    public string Experience { get; set; } 

    public string Password { get; set; } 

    public virtual Vote Vote { get; set; } 
} 

public class Vote 
{ 
    [Required] 
    [Key] 
    public int VoteID { get; set; } 

    [Required] 
    public int VoteCount { get; set; } 

    [Required] 
    public int UserID { get; set; } 

    //[ForeignKey("UserID")] 
    //[Required] 
    public virtual User User { get; set; } 
} 

2個實體之間的關係由虛擬財產,其中U評論他們定義。

+1

不是。屬性是多餘的(命名約定做同樣的事情),但*當然*沒有錯。也不需要'虛擬'修飾符。 –

相關問題