Я думал, что все это выяснил, но я бью кирпичную стену.
Клиент отправляет объект, мой контроллер проверяет, есть ли у пользователя право на редактирование, затем продолжает обновлять объект вбаза данных.(вместе с любым навигационным свойством объекта).
Моя проблема в том, что я не могу заставить его работать ...
Я пытался
var obj = context.Recipes.SingleOrDefault(o=>o.ID == id);
UpdateModel(obj);
Но я получил исключение «модель не может быть обновлена».
Поэтому я попробовал другой подход, поместив Recipe r в список параметров (и пусть связыватель модели сделает всю работу) и вызвав
context.Recipes.Attach(r);
но это оставляет вещи без изменений, поэтому context.SaveChanges()
ничего не делает.
Есть ли простое решение без необходимости писать obj.SomeProperty = r.SomeProperty
для КАЖДОГО свойства моего объекта?
Бонусный вопрос: если у моей сущности есть навигационное свойство (коллекция), я, очевидно, добавляю новые отправленные (с ID == 0
), но как узнать, какую из них удалить?Могу ли я использовать отслеживание изменений EF где-нибудь здесь?
Для обоих вопросов: должен ли быть магический метод «сравнить этот объект с этим объектом, а затем сохранить»?