Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 在同一个表中存在多个一对多关系。该属性不是相关类型上的有效导航属性_Entity Framework_Ef Code First_Entity Framework Core - Fatal编程技术网

Entity framework 在同一个表中存在多个一对多关系。该属性不是相关类型上的有效导航属性

Entity framework 在同一个表中存在多个一对多关系。该属性不是相关类型上的有效导航属性,entity-framework,ef-code-first,entity-framework-core,Entity Framework,Ef Code First,Entity Framework Core,我很难描绘这种关系 public class Person { public long Id { get; set; } [InverseProperty("Friend")] public virtual ICollection<Friendship> Friends { get; set; } } public class Friendship { public long Id { get; set; } public long

我很难描绘这种关系

public class Person
{
     public long Id { get; set; }

     [InverseProperty("Friend")]
     public virtual ICollection<Friendship> Friends { get; set; }
}

public class Friendship
{
    public long Id { get; set; }

    public long PersonId { get; set; }
    [ForeignKey(nameof(PersonId))]
    public virtual Person Person { get; set; }

    public long FriendPersonId{ get; set; }
    [ForeignKey(nameof(FriendPersonId))]
    public virtual Person Friend { get; set; }
}
公共类人物
{
公共长Id{get;set;}
[反向财产(“朋友”)]
公共虚拟ICollection好友{get;set;}
}
公众阶级友谊
{
公共长Id{get;set;}
公共长人形ID{get;set;}
[外键(姓名(人名))]
公共虚拟人{get;set;}
公共长FriendPersonId{get;set;}
[ForeignKey(姓名(FriendPersonId))]
公共虚拟人好友{get;set;}
}
我得到以下错误

类型“Person”的属性“Friends”上的InversePropertyAttribute无效。属性“Friends”不是相关类型“Friends”的有效导航属性。确保该属性存在并且是有效的引用或集合导航属性。

我可以清楚地看到Friends类确实包含一个名为Friend的属性,但我不确定是什么使它成为无效的导航属性


如果我将我的
InverseProperty
属性更改为
FriendPersonId
,它将抛出一个空引用异常

反向属性设置不正确

应该是
[InverseProperty(“Person”)])


信用:伊万·斯托夫指出了我的错误。

我检查了一下,它对我起了作用。我使用EF6.1.3测试他的isse是否与EF7相关?您使用了什么代码进行测试?我正在做这样的事情<代码>人员p=新人员();p、 添加(新友谊(){FriendPersonId=4});上下文。人物。添加(p);SaveChanges(),其中4是数据库中已经存在的人的id如果
Friends
集合表示
人的朋友,则应将其绑定到
Friends.person
属性(即
[反向属性(“person”)]
)。然后,您应该能够使用注释中的代码。上述模型是有效的,并且可以正确地与EF core一起工作。您使用的是什么版本的EF?什么代码会为你抛出异常?@IvanStoev你是对的,我有错误的InverseProperty。不过我不能把你的评论当作答案。我在修改属性以使代码正常工作时遇到异常。