所以我正在使用实体代码firest,我有一个如下所示的用户类:
public class User
{
[Key]
public string Username { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime LastModified { get; set; }
}
我正在尝试制作一个“朋友表”,无论我想出什么,我都会在数据库创建时出错。这就是我目前在朋友班中所拥有的:
public class Friend
{
[Key, ForeignKey("User")]
public virtual User MyUser { get; set; }
[Key,ForeignKey("User")]
public virtual User MyFriend { get; set; }
public bool IsAccepted { get; set; }
}
这是我得到的错误:
“Core.Model.Friend”类型的属性“MyUser”上的ForeignKeyAttribute无效。在依赖类型“Core.Model.Friend”上找不到外键名称“User”。 Name值应该是以逗号分隔的外键属性名称列表。
我错过了什么?
答案 0 :(得分:2)
您需要使用Column
属性。通常我会使用这样的东西:
public class Friend
{
[Key]
[Column(Order = 0)]
public int MyUserId { get; set; }
[Key]
[Column(Order = 1)]
public int MyFriendId { get; set; }
[ForeignKey("MyUserId")]
public virtual User MyUser { get; set; }
[ForeignKey("FriendId")]
public virtual User MyFriend { get; set; }
public bool IsAccepted { get; set; }
}
我不确定如果将Column
属性直接映射到导航属性会发生什么。你可以尝试一下,看看会发生什么......但上面的内容一般都适合我。
或者,如果您更改为使用流畅映射,则可以执行以下操作:
HasKey(u => new { u.MyUserId , u.MyFriendId });