Alex James' Entity Framework tips articles에서 그는 (0120)에 대해 how to fake foreign key properties에 대해 이야기합니다. 이것은 정확히 내가 필요로하는 것처럼 보이지만, 어떤 이유로 든 나는 업데이트 할 때 그것을 꺼낼 수 없다. 나는 내 컨트롤러의 업데이트 부분에 다음과 같은 한 :이 실패하고 다음과 같은 밖으로 뱉어엔티티 키를 사용하여 외래 키 업데이트를 위장한
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(candidates candidateToEdit)
{
string EduIDValue = candidateToEdit.education.ID.ToString();
if (!ModelState.IsValid)
return View();
try
{
var originalCandidate = (from c
in model.candidates
where c.ID == candidateToEdit.ID select c).FirstOrDefault();
//attempting it here
originalCandidate.educationReference.EntityKey = new System.Data.EntityKey("model.education", "ID", candidateToEdit.education.ID);
model.ApplyPropertyChanges(originalCandidate.EntityKey.EntitySetName, candidateToEdit);
model.SaveChanges();
return RedirectToAction("Index");
}
catch(Exception e)
{
Response.Write("Education ID Value " + EduIDValue + "<br /><br />Error: <br /><br />" + e);
return null;
//return View();
}
}
:
System.ArgumentException : 정체성 '모델'로 멤버를 메타 데이터 수집에 존재하지 않습니다. 매개 변수 이름 : System.Data.Metadata.Edm.MetadataCollection의 ID 1.GetValue(String identity, Boolean ignoreCase) at System.Data.Metadata.Edm.ReadOnlyMetadataCollection
System.Data.Metadata.Edm.ItemCollection.GetEntityContainer (String name, Boolean ignoreCase) (System.Data.Metadata)의 1.GetValue (문자열 ID, 부울 ignoreCase) .Edm.ItemCollection.GetEntityContainer (String name) System.Data.Metadata.Edm.MetadataWorkspace.GetEntityContainer (String name, DataSpace dataSpace), System.Data.EntityKey.GetEntitySet (MetadataWorkspace metadataWorkspace) at System.Data.Objects.DataClasses. EntityReference.set_EntityKey (EntityKey 값) C : \ Documents and Settings \ graham \ My Documents \ Visual Studio 2008 \ Projects \ InternshipTest \ InternshipTest \ Controllers \ CandidatesController.cs의 InternshipTest.Controllers.CandidatesController.Edit (candidateToToTitle 후보) : 84 줄
내게 어떤 의미가 없는지, 모델은 분명히 이름입니다. EntitySet
당신이 시리즈를 좋아한다고 반갑습니다. 거기에 내가 방금 고정 블로그 게시물에 NULL 참조 예외 버그가 발생했습니다. –