【发布时间】:2012-11-09 19:29:37
【问题描述】:
我正在使用 EF4 DbContext 为 ASP.NET MVC 应用程序提供模型。我使用 ViewModel 向视图提供数据,并使用 Automapper 执行 EF POCO 和 ViewModel 之间的映射。 Automapper 做得很好,但我不清楚在 ViewModel 回发到控制器以执行更新后使用它的最佳方式。
我的想法是使用 ViewModel 中包含的键获取 POCO 对象。然后我想使用 Automapper 使用 ViewModel 中的数据更新 POCO:
[HttpPost]
public ActionResult Edit(PatientView viewModel)
{
Patient patient = db.Patients.Find(viewModel.Id);
patient = Mapper.Map<ViewModel, Patient>(viewModel, patient);
...
db.SaveChanges();
return RedirectToAction("Index");
}
两个问题:
- Find() 方法返回 Proxy 而不是 POCO,这会导致 Automapper 报错。如何获取 POCO 而不是 Proxy?
- 这是执行更新的最佳做法吗?
【问题讨论】:
-
我认为这还可以,甚至很优雅。您使用了正确的
Mapper.Map重载。 -
感谢@Gert Arnold,增加了我对这种方法的信心。
标签: asp.net-mvc entity-framework-4 viewmodel automapper dbcontext