EF CodeFirst创建附加列don';我不明白为什么

本文关键字:为什么 明白 don 创建 CodeFirst EF | 更新日期: 2023-09-27 18:01:03

我得到了一个类"Friend">

    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",有人对它为什么这么做有合理的解释吗?

如果这是一个初学者的问题,我很抱歉。

提前谢谢。

EF CodeFirst创建附加列don';我不明白为什么

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

要去掉该列,可以使用[NotMapped]属性:

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

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

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