Aquí está mi código de controlador, que funciona al 100% cuando lo necesito. Sin embargo, el método POST no usa AutoMapper y eso no está bien. ¿Cómo puedo usar AutoMapper en este método de acción?Uso de AutoMapper en el método de acción Editar en una aplicación MVC3
Estoy usando Entity Framework 4 con el patrón Repository para acceder a los datos.
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);
}
Si uso AutoMapper, la referencia de entidad de marco se pierde y los datos no se conservan en la base de datos.
[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);
}
Supongo que esto se debe a la función Mapper.Map devolver un nuevo objeto del producto y debido a eso, se mantiene ninguna referencia a la gráfica marco de la entidad. ¿Qué alternativas sugieres?
No es aclare cuál es el problema que está experimentando. Usted dice que su método POST no usa Automapper, pero no veo ningún código Automapper en su método '[HttpPost]'. –
¿no estás publicando lo correcto? –
No estoy seguro de que se refiera a automapper Robert, piense que quiere decir "modelbinder" pero no estoy 100% seguro –