Этот код не может фактически сохранить любые изменения:
//
// POST: /SomeType/Edit/5
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Guid id, SomeType Model)
{
db.AttachTo(Model.GetType().Name, Model);
db.ApplyPropertyChanges(Model.EntityKey.EntitySetName, Model);
db.SaveChanges();
return RedirectToAction("Index");
}
ASP.NET MVC создает объектную модель в виде типа объекта EntityObject со значением EntityState Отдельно .
После использования метода AttachTo его EntityState становится неизменным .
MSDN о присоединении объектов (Entity Framework)
Объекты прикреплены к объекту
контекст в неизменном состоянии.
Из-за состояния неизменного метод ApplyPropertyChanges ничего не делает.
Я хочу, чтобы вместо этого было состояние Изменено .
MSDN при перечислении EntityState
Частный
Объект существует, но он не отслеживается объектом
Сервисы. Сущность находится в этом состоянии
сразу после того, как он был создан
и прежде чем он будет добавлен к объекту
контекст. Сущность также находится в этом
состояние после того, как он был удален из
контекст, позвонив в отдел
метод или если он загружен с помощью
NoTrackingMergeOption.
Без изменений
Объект не был изменен, так как он был загружен в
контекст или с последнего раза
что метод SaveChanges был
называется.
Модифицированный
Объект изменен, но метод SaveChanges не имеет
был назван.
Я не могу явно установить для свойства EntityObject EntityState значение Изменено . Только для чтения.
Разве невозможно иметь строго типизированные контроллеры MVC с EntityObjects?