这是一个困扰了我一阵子的大问题的一部分(整个图片见"EntityCollection already initialized" error with entity as model in Asp.Net MVC?)。在MVC 3应用程序中更新模型子集合?
但是,我发现一个网站有人遇到类似的问题,并显然解决了他的需求(见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并获得与改变的属性更新,这些值不会保存到尽管modelProgram对象是对Consultant上Program对象的引用,但是我在做什么错误?
我正在使用实体框架的方式,如果它不清楚。 (顺便说一下,如果有人对上一个问题和整个图片有任何意见,那也是值得欢迎的,但它仍然没有解决)。
请帮帮忙,我失去了信心,MVC,这是我最近才这么兴奋......
UPDATE:有显然这里的错误:的UpdateModel实际上并没有做任何更新,我刚刚为modelProgram引用了另一个对象(视图模型中的一个),所以它当然具有正确的属性值。我仍然想要如何实现这个想法虽然...
@everyone:最后我想别的东西,与AutoMapper。我为它创建了一个新问题:http://stackoverflow.com/questions/5126603/trying-to-use-automapper-for-model-with-child-collections-getting-null-error-in。我确实做到了,但我对代码并不满意,所以如果有人比我自己在那里提供的答案有更好的方式,那么我会把这个和那个问题都归功于它! – Anders 2011-02-27 09:03:09