Итак, я, наконец, обернулся вокруг саморегуляции многих ко многим отношениям в коде EF, но теперь я могу ответить на вопрос о наилучшем способе обновите эти отношения.EF code-first Self-Referencing Рекомендации по обновлению многих-ко-многим
Допустим, у нас есть этот вид отношений:
modelBuilder.Entity<Contact>()
.HasMany(c => c.Friends)
.WithMany()
со следующим в Contact.cs
классе:
public virtual iCollection<Contact> Friends {get;set;};
В моем Контакте зрении, у меня есть Множественный выбирать друг для Контакта , Затем я сохраняю, повторяя все выбранные и запуская thisContact.Friends.Add(friend)
и сохраняя изменения.
Затем, когда вы вернетесь в контактный вид, достаточно легко получить .Friends
и повторно заполнить мультиселекцию, но у меня возникли проблемы с повторным сохранением новых друзей. Каков наилучший способ сделать это? Сначала я решил удалить всех друзей, а затем добавить новые из мультиселекта, но это не кажется очень эффективным, и я не был уверен точно, в какой момент удалить .Friends
в отношении сохранения Contact
.
Есть ли чистый способ пройти через новые элементы, выбранные из мультиселекта, сравнить его с тем, что уже находится в thisContact.Friends
, добавить новые, удалить те, которые там не существуют, и сохранить соответствующие им?
Надеюсь, это имеет смысл, спасибо заранее!
Просто замена друзей на сегодняшний день является самым простым способом. Это не дорого, потому что задействованы только очень маленькие записи (если нет сотен предметов). –
Вы имеете в виду удаление существующих друзей и добавление новых? – blubberbo
Да. Только записи в таблице соединений удаляются и повторно вставлены, а не сами контакты. –