Как можно легко обновить объекты? (EF Code First, MVC3)

Я думал, что все это выяснил, но я врезаюсь в кирпичную стену.

Клиент отправляет объект, мой контроллер проверяет, есть ли у пользователя право на редактирование, а затем приступает к обновлению объекта в базе данных. (вместе с любыми навигационными свойствами объекта).
Моя проблема в том, что я не могу заставить его работать ...

Я пробовал

var obj = context.Recipes.SingleOrDefault(o=>o.ID == id);
UpdateModel(obj);

Но у меня есть "модель не может быть обновленным "исключение.
Поэтому я попробовал другой подход, поместив рецепт r в список параметров (и позволив связывателю модели выполнить работу) и вызвал

context.Recipes.Attach(r); 

, но при этом все осталось на «Без изменений», поэтому context.SaveChanges () ничего не делает.

Есть ли простое решение без необходимости писать obj.SomeProperty = r.SomeProperty для КАЖДОГО свойства моего объекта?

Дополнительный вопрос: если у моей сущности есть свойство навигации ( collection) Я, очевидно, добавляю новые отправленные (с ID == 0 ), но как мне узнать, какой из них удалить? Могу ли я где-нибудь здесь использовать отслеживание изменений EF?

По обоим вопросам: должен ли существовать волшебный метод «сравните этот объект с этим объектом, а затем сохраните»?

0
задан TDaver 15 January 2012 в 11:46
поделиться