actualmente estoy usando AutoMapper para trazar mis entidades de Entity Framework a mi punto de vista del modelo:ASP.net MVC - ¿Debo usar AutoMapper desde ViewModel a las entidades de Entity Framework?
public class ProductsController : Controller
{
private IProductRepository productRepository;
public ProductsController(IProductRepository productRepository)
{
this.productRepository = productRepository;
}
public ActionResult Details(int id)
{
var product = productRepository.GetProduct(id);
if(product == null)
return View("NotFound");
ProductDetailsViewModel model = Mapper.Map<Product, ProductDetailsViewModel>(product);
return View(model);
}
}
Esto funciona bien. La pregunta que tengo es cuando necesito pasar de mi Modelo de Vista a mi entidad para actualizar la base de datos. ¿Debo usar AutoMapper para esto? ¿Es esta una mala/peligrosa práctica?
Parece que AutoMapper es bueno para aplanar un tipo complejo a un tipo simple (plano), pero hasta ahora estoy luchando tratando de pasar de un tipo plano/simple a uno más complejo como mi entidad con varios navegadores propiedades.
Si es una mala idea usar AutoMapper para hacer esto, ¿cómo se vería mi código para una acción de Crear?
public ActionResult Create(CreateProductViewModel model)
{
if(ModelState.IsValid)
{
// what do i do here to create my Product entity?
}
}
¿Qué ocurre con una acción de edición?
public ActionResult Edit(int id, EditProductViewModel model)
{
Product product = productRepository.GetProduct(id);
// how do i convert my view model to my entity at this point???
}
sus viewmodels pueden tener una propiedad de la entidad Producto, de esa manera no necesitará convertir nada. – Joakim
Este artículo ofrece algunas sugerencias. http://lostechies.com/jimmybogard/2009/06/30/how-we-do-mvc-view-models/ – jrummell