【发布时间】:2011-02-25 15:06:25
【问题描述】:
这是困扰我一段时间的更大问题的一部分(请参阅"EntityCollection already initialized" error with entity as model in 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 引用了一个不同的对象(视图模型中的那个),所以它当然具有正确的属性值。我仍然想知道如何实现这一点......
【问题讨论】:
-
@everyone:我最终尝试了其他东西,使用 AutoMapper。我为它创建了一个新问题:stackoverflow.com/questions/5126603/…。我实际上让它工作了,但我对代码并不满意,所以如果有人有比我自己提供的答案更好的方法,我会为这个和那个问题表示赞赏!
标签: asp.net entity-framework asp.net-mvc-3 updatemodel