有一篇文章说明了如何做到这一点,但它没有解释如何使用它。
我们有一个英语'Person'的班级“Persoon”(荷兰语),我们想要一个朋友(荷兰语的朋友)加上ICollection,他也是一个'人'
我们的域类Persoon中有以下代码:
public virtual ICollection<Persoon> Vrienden { get; set; }
这是因为一个人可以有很多朋友(vrienden in Dutch)
为了实现我们的Icollection并创建友谊表,我们使用了以下代码:
modelBuilder.Entity<Persoon>()
.HasMany(m => m.Vrienden)
.WithMany()
.Map(w => w.ToTable("Vriendschap")
.MapLeftKey("PersoonID")
.MapRightKey("VriendID"));
现在问题是,我们已经创建了友谊表,但是我们现在如何使用PersoonID(personID)&amp;添加Person到友谊表。 vriendID(friendID)。 我知道你可以使用'vrienden.Add(entity)',但我不知道如何在一个新的控制器中使用ith像friendshipcontroller这是不是必要的?
我们如何在控制器和视图中实现这一点?这样我们就可以添加,编辑,删除en了解集合中的列表?
提前致谢!!
答案 0 :(得分:1)
您可以使用您在问题中提供的示例代码来应用CRUD操作:
person.Vrienden.Add(friend);
person.Vrienden;
person.Vrienden.Remove(friend);
otherPerson.Vrienden.Add(friend);
person.Vrienden.Remove(friend);
但是,既然您希望能够查询所有友谊,那么您可能想要的是在您的域模型中实现Friendship
概念:
public class Friendship
{
public Persoon FriendA { get; set; }
public Persoon FriendB { get; set; }
}
调整Persoon
及其映射,以便Vrienden
为ICollection<Friendship>
。然后将您的映射调整为一对多(一个人有很多友谊)。
现在您可以查询所有友谊并直接将CRUD操作应用于Friendship
。请注意,您需要小心防止重复的友谊,因为您可以在同一对朋友之间有两个友谊,但顺序相反。