我目前使用AutoMapper到我的实体框架的实体映射到我的视图模型:ASP.net MVC - 我应该使用从ViewModel到实体框架实体的AutoMapper?
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要做到这一点,那么将我的代码看起来像一个创建行动是什么?
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???
}
您的ViewModels能有实体产品的属性,这样你就不必在所有转换。 – Joakim
本文提供了一些建议。 http://lostechies.com/jimmybogard/2009/06/30/how-we-do-mvc-view-models/ – jrummell