Это часть более крупной проблемы, которая мучает меня некоторое время (см. Ошибка «EntityCollection уже инициализирована» с сущностью в качестве модели в Asp.Net MVC? для всей картинки).
Но я нашел веб-сайт с кем-то, кто столкнулся с подобной проблемой и, видимо, решил ее для своих нужд (см. http://codeblog.shawson.co.uk/creating-an-order-order-details-style-form-using-asp-net-mvc2-entity-framework/). Я попробовал это, но мне пришлось внести некоторые изменения, чтобы соответствовать моему коду и вспомогательным методам, предоставленным учебным пособием Стивена Сандерсона (см. Предыдущий пост).
Кажется, я очень близок, но не совсем:
UpdateModel(consultant, "Consultant");
if (vm.Programs != null) //Unnecessary? Can it even be null if it's initialized from the model?
for (int i = 0; i < vm.Programs.Count; i++)
{
Program formProgram = vm.Programs[i];
Program modelProgram = consultant.Programs.SingleOrDefault(x => x.Id == formProgram.Id);
if (modelProgram == null)
_repository.AddProgram(formProgram);
else
modelProgram = formProgram;
UpdateModel(modelProgram); //Doesn't work. The modelProgram object does get updated with the correct property values, but it isn't saved to the repository...
}
_repository.Save();
Несмотря на то, что это соответствует примеру на сайте выше, и modelProgram обновляется с измененными свойствами, эти значения не сохраняются в базе данных в _repository.Save () объекта Консультанта, даже если объект modelProgram является ссылка на объект Программы у Консультанта ... Что я делаю не так?
Кстати, я использую Entity Framework, если неясно.
(Кстати, если у кого-то есть какие-либо замечания по предыдущему вопросу и всей картине, это также приветствуется, это все еще не решено).
Пожалуйста, помогите, я теряю веру в MVC, которой я так недавно восхищался ...
ОБНОВЛЕНИЕ: Здесь, по-видимому, произошла ошибка: UpdateModel на самом деле не обновлял, я только что ссылался на другой объект (тот, что в viewmodel) для modelProgram, поэтому, конечно, он имел правильные значения свойств. Я все еще хочу идеи о том, как добиться этого, хотя ...