1

这是困扰我一段时间的更大问题的一部分(请参阅“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 引用了一个不同的对象(视图模型中的那个),所以它当然具有正确的属性值。我仍然想要关于如何实现这一目标的想法......

4

1 回答 1

0

尝试在 for 循环中移动 _repository.Save()。

你的内心是否正确?当 modelProgram 为 null 时,您正在运行 UpdateModel(null)。这可能会崩溃并解释为什么什么都没有保存。

编辑

尝试输入 {}

            if (modelProgram == null)
               {
                 _repository.AddProgram(formProgram);
               }
            else                    
              {
                modelProgram = formProgram;                
                UpdateModel(modelProgram); 
               }
于 2011-02-25T19:10:17.877 回答