因此,我最终将自己的头围绕自我引用EF代码中的多对多关系首先我想,但现在我可以进入关于最佳方式更新这些关系。EF代码优先自引用多对多更新引用
比方说,我们有这样的关系:
modelBuilder.Entity<Contact>()
.HasMany(c => c.Friends)
.WithMany()
与在Contact.cs
类以下内容:
public virtual iCollection<Contact> Friends {get;set;};
在我的联系人视图,我有一个多选,选择朋友的联系。然后通过遍历所有选中的部分并运行thisContact.Friends.Add(friend)
并保存更改来保存。
然后,当您回到联系人视图时,很容易找回.Friends
并重新填充多选,但我一直遇到重新保存新朋友的问题。什么是最好的方式去做呢?我首先想到删除所有的朋友,然后从多选中添加新的,但这似乎不是很有效,我不确定删除.Friends
与保存Contact
有什么关系。
是否有一种干净的方式来通过从multiselect中选择的新项目,将其与thisContact.Friends
中已有的项目进行比较,添加新项目,删除那些不存在并保留匹配的项目?
我希望这是有道理的,谢谢你提前!
只是取代朋友是迄今为止最简单的方法。这并不昂贵,因为只涉及非常小的记录(除非有数百个项目)。 –
你的意思是删除存在的朋友,然后添加新的朋友? – blubberbo
是的。只有联结表中的记录被删除并重新插入,而不是联系人本身。 –