2
我無法映射此關係。同一個表中存在多個一對多關係。該屬性不是相關類型的有效導航屬性
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; }
}
我收到以下錯誤
The InversePropertyAttribute on property 'Friends' on type 'Person' is not valid. The property 'Friends' is not a valid navigation property on the related type 'Friendship'. Ensure that the property exists and is a valid reference or collection navigation property.
我可以清楚地看到,友誼類不包含的屬性稱爲朋友,但我不知道是什麼讓這一個無效的導航屬性。
如果我將InverseProperty
屬性更改爲FriendPersonId
,它將引發空引用異常。
我檢查了它,它爲我工作。我正在使用EF 6.1.3來測試他的isse是否與EF7有關? –
你用什麼代碼來測試?我正在做這樣的事情。 'Person p = new Person(); p.Friends.Add(new Friendship(){FriendPersonId = 4}); context.People.Add(P); context.SaveChanges();',其中4是DB中已存在的人員的ID – Dave
如果Friends集合代表Person的朋友,那麼您應該將它與「Friendship.Person」屬性(即'[InverseProperty(「Person」)]')。那麼你應該可以使用評論中的代碼。 –