Attualmente sto usando automapper per mappare i miei soggetti Entity Framework alla mia vista Modello:ASP.net MVC - Devo utilizzare AutoMapper da ViewModel alle entità 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);
}
}
Questo metodo funziona bene. La domanda che ho è quando devo andare dal mio View Model alla mia entità per aggiornare il database. Dovrei usare AutoMapper per questo? È una pratica cattiva/pericolosa?
Sembra AutoMapper è buono per appiattire un tipo complesso a un tipo (piatto) semplice, ma finora sto lottando cercando di passare da un tipo semplice/piatto a un tipo più complesso come la mia entità con le varie navigazione proprietà.
Se è una cattiva idea utilizzare AutoMapper per fare ciò, quale sarebbe il mio codice per un'azione Crea?
public ActionResult Create(CreateProductViewModel model)
{
if(ModelState.IsValid)
{
// what do i do here to create my Product entity?
}
}
E un'azione di modifica?
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???
}
i tuoi viewmodels potrebbero avere una proprietà del prodotto dell'entità, in questo modo non avrai bisogno di convertire affatto. – Joakim
Questo articolo offre alcuni suggerimenti. http://lostechies.com/jimmybogard/2009/06/30/how-we-do-mvc-view-models/ – jrummell