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",有人对它为什么这么做有合理的解释吗?
如果这是一个初学者的问题,我很抱歉。
提前谢谢。
它是一个关系列。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建议(