在自身模型中建立多对多关系

艾特堡

我试图制作一个join仅能处理一个模型的正确表,我打算为此表设置CRUD页面,以供以后使用,因此我相信它不能成为原始模型的一部分。

public class Person
{
  [Key]
  public int PersonID { get; set;}

  public string Firstname { get; set;}
  public string LastName { get; set;}
  public string Birthday { get; set;}
}

现在,我想跟踪人们,他们最好的朋友以及他们最好的朋友的生日。

public class Friends
{
  [Key]
  public int FriendshipID {get; set;}

  [ForeignKey("Person")]
  public Person SelectedPerson {get; set;}
  public int SelectedPersonID {get; set;}

  [ForeignKey("Person")]
  public Person Friend {get; set;}
  public int FriendID {get; set;}
}

这有一些问题,我不完全知道如何[ForeignKey("xxxx")]工作,但这似乎会导致错误。一个人可能有多个最好的朋友,所以我必须在friends表中有很多条目SelectedPerson,为了获得所有最好的朋友,这些必须是相同的,我觉得如果有一个很好的方法可以得到一个一次列出他们的朋友,而不只是一个单一的朋友,这会有所帮助,但是似乎会导致某种级联删除错误?

我知道在stackoverflow上存在与此问题类似的问题,但是我找不到它连接回到同一表的任何地方,由于EF无法处理相同名称的外键,因此我目前已注释了ForeignKeys。

非常感谢您的帮助/建议,谢谢您的宝贵时间。

法哈德·扎马尼(Farhad Zamani)

您应该使用InversePropertyin父类定义多个关系

并且不要使用重复的名称ForeignKey

public class Person
{
  [Key]
  public int PersonID { get; set;}

  public string Firstname { get; set;}
  public string LastName { get; set;}
  public string Birthday { get; set;}

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

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

然后将Friends更改为此

public class Friends
{
  [Key]
  public int FriendshipID {get; set;}

  [ForeignKey("SelectedPersonID")]
  public Person SelectedPerson {get; set;}
  public int SelectedPersonID {get; set;}

  [ForeignKey("FriendID")]
  public Person Friend {get; set;}
  public int FriendID {get; set;}
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章