这是我的控制器代码,它以我需要的方式完美地工作。但是POST方法没有使用AutoMapper,这是不可以的。如何在此操作方法中使用AutoMapper?
我正在使用带有存储库模式的Entity Framework 4来访问数据。
public ActionResult Edit(int id)
{
Product product = _productRepository.FindProduct(id);
var model = Mapper.Map<Product, ProductModel>(product);
return View(model);
}
[HttpPost]
public ActionResult Edit(ProductModel model)
{
if (ModelState.IsValid)
{
Product product = _productRepository.FindProduct(model.ProductId);
product.Name = model.Name;
product.Description = model.Description;
product.UnitPrice = model.UnitPrice;
_productRepository.SaveChanges();
return RedirectToAction("Index");
}
return View(model);
}
如果我使用AutoMapper,那么Entity Framework的引用会丢失,数据就不能持久化到数据库中。[HttpPost]
public ActionResult Edit(ProductModel model)
{
if (ModelState.IsValid)
{
Product product = _productRepository.FindProduct(model.ProductId);
product = Mapper.Map<ProductModel, Product>(model);
_productRepository.SaveChanges();
return RedirectToAction("Index");
}
return View(model);
}
我猜测这是由于 Mapper.Map 函数返回了一个全新的 Product 对象,因此没有保留对实体框架图的引用。你有什么其他建议吗?