EF CodeFirst创建额外的列不明白为什么

时间:2016-08-06 11:14:29

标签: c# entity-framework

我上了一堂课"朋友"

    public class Friend
{
    [Key , Column(Order = 0)]
    public string MeID { get; set; }

    public ApplicationUser Me { get; set; }

    [Key, Column(Order = 1)]
    public string MyFriendID { get; set; }

    public ApplicationUser MyFriend { get; set; }

    public bool isFavorite { get; set; }
}

创建数据库时,它会添加一个额外的列" ApplicationUser_Id" ,任何人都有合理的解释,为什么这样做?

对不起,如果这是初学者的问题。

提前感谢。

2 个答案:

答案 0 :(得分:1)

这是一个关系栏。 Friend有一个ApplicationUser。因此,要实现该关系,数据库表Friend必须具有外键ApplicationUser_Id,它是类型ApplicationUser的主键。

要删除该列,您可以使用[NotMapped]属性:

[NotMapped]
public ApplicationUser MyFriend { get; set; }

答案 1 :(得分:0)

WebElement属性添加到[ForeignKey("MyFriendID")]属性,将MyFriend添加到[ForeignKey("MeID")]属性

如果您使用C#6,则可以使用Me而不是硬编码字符串“MyFriendID”(由@TGlatzer建议)