В настоящее время я использую 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?
}
}
Как насчет действия "Изменить"?
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???
}