MVC 프로젝트가 있고 데이터베이스에 Entity Framework Code First 및 POCO 개체를 사용하고 있습니다. 예 :Entity Framework에서 관련 엔터티를 업데이트하는 방법
public class ClassA
{
public int? Id {get; set;}
public string Name { get; set;}
public virtual ClassB B {get; set;}
}
public class ClassB
{
public int? Id {get;set;}
public string Description {get;set;}
}
나는 모델을 만들거나 편집하는 ActionResult가 있습니다. 문제는이 ActionResult를 호출하여 모델을 업데이트하고 model.B
이 변경 되었기 때문에 관계가 데이터베이스에 저장되지 않습니다. ActionResult를 호출하여 새 객체를 만들면 예상대로 작동합니다. 어떻게 해결할 수 있습니까?
public ActionResult Save(ClassA model)
{
model.B = GetBFromDb(model.B.Id.Value);
if(ModelState.IsValid)
{
if (id.HasValue)
{
context.Entry(model).State = System.Data.EntityState.Modified;
}
else
{
context.ClassAs.Add(model);
}
context.SaveChanges();
// redirect to index etc.
}
return View("EditForm", model);
}
이 연결 해제 된 상태에서 외래 키가없는 경우 일부가 있습니다 EF가 해결할 수없는 격차 & 여분의 코드를 입증해야합니다. 그렇지 않으면 관계를 볼 수 없습니다. FK 속성을 사용하면 스칼라 값이며 EF가 여러 프로세스를 쉽게 추적 할 수 있습니다. 나는이 정확한 주제에 대해 2012 년 1 월 Data Points 칼럼을 실제로 작성했습니다! EF는 FK 스칼라 속성이있을 때 훨씬 쉽게 사용할 수 있습니다. 그렇지 않으면 "작동하도록"기대하는 많은 기능을 사용하여 진행 상황과 필요한 정보를 제공하는 방법을 더 잘 이해할 수 없습니다. 죄송합니다 –
전에 줄 잃은 FK를 보지 못했습니다 .JLieieLerman, 문제 없어요, 당신의 도움에 감사드립니다! :) – Marthijn