0

所以我正在使用实体代码最火,我有一个看起来像这样的用户类:

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”上找不到外键名称“用户”。Name 值应该是逗号分隔的外键属性名称列表。

我错过了什么?

4

1 回答 1

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 });
于 2013-03-18T02:00:31.837 回答