이것은 큰 문제의 일부로서 나를 잠시 괴롭혔습니다 (전체 그림은 "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 객체에 대한 참조 일지라도 Consultant 객체의 _repository.Save()에있는 데이터베이스 ... 내가 뭘 잘못하고 있니?
명확하지 않은 방식으로 Entity Framework를 사용하고 있습니다.
(BTW, 이전 질문 및 전체 그림에 대한 의견이있는 사람이라면 환영할만한 것이지만 아직 해결되지 않았습니다).
도와주세요, 난 ... 아주 최근에 대해 너무 흥분했다 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