2011-08-08 5 views
0

이 아닌 코드 예선의 첫 번째 줄을에 포함시키지 않으면이 코드 스 니펫이 작동하지 않습니다. 이것은 ApplyCurrentValues 방법이 작동하는 방법입니까?다른 객체에서 ApplyCurrentValues를 호출하기 전에 왜 이전 엔티티를 가져와야합니까?

_entities.Contacts.FirstOrDefault(c => c.Id == contactToEdit.Id); 
_entities.Contacts.ApplyCurrentValues(contactToEdit); 
_entities.SaveChanges(); 
return RedirectToAction("Index"); 

이 코드는 연락처 레코드를 편집하여 데이터베이스에 저장합니다. 나의 이해에서

[HttpPost] 
public ActionResult Edit(Contact contactToEdit) 
{ 
    if (!ModelState.IsValid) 
    { 
     return View(); 
    } 

    try 
    { 
     _entities.Contacts.FirstOrDefault(c => c.Id == contactToEdit.Id); 
     _entities.Contacts.ApplyCurrentValues(contactToEdit); 
     _entities.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 
    catch 
    { 
     return View(); 
    } 
} 

답변

2

이, 개체 컨텍스트는 필드가 변경되는 어떻게 든 알 필요가있다 :

여기에 전체 방법입니다.
컨텍스트가 원래 값의 레코드를 유지하는 경우 필드는 업데이트 된 것으로 표시됩니다 ().

첫 번째 줄에는 객체 컨텍스트를 만들 때 부작용이있는 것처럼 보입니다. 은 엔티티로드를 통해의 원래 값을 인식합니다.

thesetwo 답변을 살펴보십시오.

관련 문제