EF 4.1代码首先无效的列名称"User_UserId"

Pet*_*Lim 0 c# entity-framework

我无法弄清楚为什么这会导致EF错误:在EF中保存时,列名"User_UserId"无效.

这是我的模型:

 [DataContract(IsReference = true)]
public class User
{
    [Key]
    [DataMember]
    public virtual Guid UserId { get; set; }

    [DataMember]
    public virtual string Username { get; set; }

    [DataMember]
    public virtual string Password { get; set; }

    [DataMember]
    public virtual string Email { get; set; }

    [DataMember]
    public virtual ICollection<FriendList> FriendLists { get; set; }
}

[DataContract(IsReference = true)]
public class FriendList
{
    [Key]
    [DataMember]
    public virtual Guid FriendListId { get; set; }

    [DataMember]
    [ForeignKey("User")]
    public virtual Guid UserId { get; set; }

    [DataMember]
    public virtual User User { get; set; }

    [DataMember]
    [ForeignKey("FriendUser")]
    public virtual Guid FriendUserId { get; set; }

    [DataMember]
    public virtual User FriendUser { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

基本上,它与有朋友列表的用户有一对多的关系.

Sla*_*uma 6

你有2种型的导航性能User在你的FriendList班级.EF无法弄清楚这些属于哪个,User.FriendLists然后为所有三个导航属性创建单独的一对多关系,其中一个具有默认外键名称User_UserId.

您可以使用以下InverseProperty属性覆盖此约定:

public class FriendList
{
    // ...

    [DataMember]
    [InverseProperty("FriendLists")]
    public virtual User User { get; set; }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

现在,User.FriendLists并且FriendList.User是相同的一对多的关系的端点和FriendList.FriendUser限定了第二一对多的关系(但是没有在一个端点User类).