Как обновить связанные сущности в Entity Framework

У меня есть проект MVC и я использую Entity Framework Code First и объекты POCO для базы данных. Например:

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);
}
12
задан Marthijn 8 December 2011 в 13:20
поделиться