В настоящее время я использую AutoMapper для сопоставления моих сущностей 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);
}
}
Это хорошо работает.У меня возникает вопрос, когда мне нужно перейти от моей модели представления к моей сущности, чтобы обновить базу данных. Следует ли мне использовать для этого AutoMapper? Это плохая / опасная практика?
Похоже, AutoMapper хорош для сглаживания сложного типа в простой (плоский) тип, но пока я изо всех сил пытаюсь перейти от плоского / простого к более сложному типу как моя сущность с различными свойствами навигации.
Если использовать AutoMapper для этого - плохая идея, то как будет выглядеть мой код для действия Create?
public ActionResult Create(CreateProductViewModel model)
{
if( ModelState.IsValid )
{
// what do i do here to create my Product entity?
}
}
А как насчет действия Edit?
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???
}
По сути, автоматическое отображение плохо, я написал сообщение в блоге об этом http://blog.gavryli.uk/2015/12/02/why-automapping-is-bad-for-you/