Создание и удаление довольно очевидны, обновление - хитрая задача. В основном, есть три подхода. Поскольку каждый пункт назначения ДОЛЖЕН иметь один и только один источник.
Во-первых, удалите все пункты назначения, а затем снова добавьте их в источник. Это удаляет «осиротевшие» пункты назначения и является самым простым и грубым методом.
Во-вторых, пользовательский интерфейс должен сообщать, какие пункты назначения добавлены, а какие удалены. ИЛИ, определите его самостоятельно, изучив FK (null = new) на входе и сравните существующие с сохраненными значениями, удалив «удаленные» пункты назначения. Хитрее.
В-третьих, используйте формат JSONPatchDocument, который дает план действий по обновлению сохраненных объектов.