私は現在、私のビューモデルに私のEntity FrameworkのエンティティをマッピングするためにAutoMapperを使用しています:ASP.net MVC - ViewModelから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???
}
あなたのビューモデルはエンティティプロダクトのプロパティを持つことができます。変換する必要はありません。 – Joakim
この記事にはいくつかの提案があります。 http://lostechies.com/jimmybogard/2009/06/30/how-we-do-mvc-view-models/ – jrummell