Obecnie używam AutoMapper mapować moje podmioty Entity Framework do mojego widoku modelu:ASP.net MVC - Czy powinienem używać AutoMapper z ViewModel do encji 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);
}
}
Działa to dobrze. Mam pytanie, kiedy muszę przejść z mojego modelu widoku do mojej jednostki, aby zaktualizować bazę danych. Czy powinienem używać do tego AutoMappera? Czy to jest zła/niebezpieczna praktyka?
Wygląda na to, że AutoMapper jest dobry do spłaszczania złożonego typu do prostego (płaskiego) typu, ale jak na razie staram się przejść od płaskiego/prostego do bardziej złożonego typu, jak moja istota z różnymi nawigacjami nieruchomości.
Jeśli nie jest dobrym pomysłem, aby użyć AutoMappera, to jaki byłby mój kod dla akcji Create?
public ActionResult Create(CreateProductViewModel model)
{
if(ModelState.IsValid)
{
// what do i do here to create my Product entity?
}
}
Co należy zrobić w akcji edycji?
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???
}
Twoje wizjery mogą mieć własność produktu Produkt, w ten sposób nie będziesz musiał konwertować w ogóle. – Joakim
Ten artykuł zawiera kilka sugestii. http://lostechies.com/jimmybogard/2009/06/30/how-we-do-mvc-view-models/ – jrummell