Это правильный подход. Вы изменяете свойство навигации = вы изменяете отношение между сущностями. Чтобы удалить связь между сущностями, вы должны удалить связанную сущность из свойства навигации. Чтобы добавить отношение между объектами, необходимо добавить связанный объект в свойство навигации.
Единственная проблема может возникнуть, если вы вызываете Add
с сущностью, которая существует в БД, но не загружена из базы данных (фиктивный объект или отдельная сущность). В этом случае EF попытается снова вставить вашу сущность в базу данных. Чтобы избежать этого, вы должны либо использовать присоединенный объект (загрузить его из БД), либо установить его состояние на Unchanged
.
Другим способом является использование иностранного объединения, когда зависимое лицо также предлагает свойство внешнего ключа. Вы можете изменить отношение, просто установив для этого свойства идентификатор родителя. Это применимо только для отношений один-к-одному и один-ко-многим.
Имейте в виду, что удаление сущности из свойства навигации родителя не удаляет сущность дочерняя сущность из базы данных. Поэтому, если отношение к родителю является зависимым, вы также должны удалить его или SaveChanges
выдает исключение.