Using Automapper to update an existing Entity POCO

There seem to be two approaches to dealing with the EF proxy issue:

  1. Switch off ObjectContext.ContextOptions.ProxyCreationEnabled, either for the whole application (in EF Context constructor or EDMX), or for the query where you need to guarantee getting an actual Entity object rather than a proxy.
  2. Using an extension to Automapper, documented here: https://gist.github.com/935461.

Note. The latter is commented with "Room for improvement. See: Automapper : mapping issue with inheritance and abstract base class on collections with Entity Framework 4 Proxy Pocos".


If you use Automapper like that, it returns a new Patient object and the references to the enity framework graph are not kept. You have to use it like this:

[HttpPost]
public ActionResult Edit(PatientView viewModel)
{
    Patient patient = db.Patients.Find(viewModel.Id); 
    Mapper.Map(viewModel, patient);
    ...
    db.SaveChanges();
    return RedirectToAction("Index");
}