Я пытаюсь обновить объект, используя EF4. Объект передается от сильно типизированной страницы методы действия иПочему обновление объекта работает только одним, конкретным способом?
[HttpPost]
public ActionResult Index(Scenario scenario, Person person)
{
// Some business logic.
// Update Scenario with Person information.
scenario.Person = person;
// Update the corresponding object and persist the changes.
// Note that the repository stems from the repository pattern. Contains the ObjectContext.
Scenario updateScenario = repository.GetScenario(scenario.ScenarioID);
updateScenario = scenario;
repository.Save();
}
Однако, проблема заключается в том, что изменения не сохраняются, когда я делаю это. Однако, если я вместо этого обновляю каждое отдельное свойство в рамках сценария индивидуально, а затем сохраняю изменения (с помощью метода Save), все сохраняется.
Я смущен, почему это происходит. В моем реальном приложении в Сценарии есть МНОГО элементов и подобъектов, поэтому невозможно обновить каждое отдельное свойство. Может кто-то, пожалуйста, проясните, что происходит, и что мне нужно сделать, чтобы исправить это?
Как вы знаете, что изменения сохраняются только при глубокой копии? Я имею в виду, как вы это проверяете, на уровне db? Кроме того, есть ли какие-либо другие методы 'Save' в' repository', что-то вроде 'SaveOrUpdate'? – VoodooChild
@ VoodooChild - Да, я подтверждаю это на уровне базы данных. И я на самом деле написал репозиторий. Сохранить в основном просто вызывает объекты .SaveChanges(), где сущности - это контекст для структуры сущности. – JasCav