这是困扰我一段时间的更大问题的一部分(请参阅“EntityCollection 已初始化”错误,在 Asp.Net MVC 中将实体作为模型?对于整个图片)。
但是我找到了一个网站,其中有人遇到了类似的问题,显然解决了他的需要(见http://codeblog.shawson.co.uk/creating-an-order-order-details-style-form-using -asp-net-mvc2-entity-framework/)。我试过了,但必须进行一些修改以适应我的代码,以及 Steven Sanderson 的教程提供的辅助方法(参见上一篇文章)。
我似乎非常接近,但并不完全:
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 确实使用更改的属性进行了更新,但这些值不会保存到 Consultant 对象的 _repository.Save() 上的数据库中,即使 modelProgram 对象是对顾问上的程序对象...我做错了什么?
顺便说一句,如果不清楚,我正在使用实体框架。
(顺便说一句,如果有人对上一个问题和整个图片有任何意见,那也将受到欢迎,但仍未解决)。
请帮忙,我对 MVC 失去了信心,我最近对此感到非常兴奋......
更新:这里显然有一个错误:UpdateModel 实际上并没有进行任何更新,我只是为 modelProgram 引用了一个不同的对象(视图模型中的那个),所以它当然具有正确的属性值。我仍然想要关于如何实现这一目标的想法......