Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.net MVC - Should I use AutoMapper from ViewModel to Entity Framework entities?

Tags:

I am currently using AutoMapper to map my Entity Framework entities to my View Model:

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);     } } 

This works well. The question I have is when I need to go from my View Model to my entity in order to update the database. Should I be using AutoMapper for this? Is this a bad/dangerous practice?

It seems like AutoMapper is good for flattening a complex type to a simple (flat) type, but so far I'm struggling trying to go from a flat/simple to a more complex type like my entity with the various navigation properties.

If it is a bad idea to use AutoMapper to do this, then what would my code look like for a Create action?

public ActionResult Create(CreateProductViewModel model) {     if( ModelState.IsValid )     {         // what do i do here to create my Product entity?     } } 

What about an Edit action?

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??? } 
like image 306
Dismissile Avatar asked Sep 28 '11 20:09

Dismissile


People also ask

When should I use AutoMapper?

AutoMapper is used whenever there are many data properties for objects, and we need to map them between the object of source class to the object of destination class, Along with the knowledge of data structure and algorithms, a developer is required to have excellent development skills as well.

Is AutoMapper worth using?

AutoMapper will save you writing a LOT of boring mapping code and it will probably spare you from a few nasty bugs as well. The only thing you must be aware of is that the mapping uses convensions and you really want to follow these. As long as you do that, AutoMapper is a great tool!

Is AutoMapper faster than manual mapping?

Inside this article, it discusses performance and it indicates that Automapper is 7 times slower than manual mapping. This test was done on 100,000 records and I must say I was shocked.

What is AutoMapper good for?

AutoMapper is a simple library that helps us to transform one object type into another. It is a convention-based object-to-object mapper that requires very little configuration. The object-to-object mapping works by transforming an input object of one type into an output object of a different type.


1 Answers

I'm a of the mindset that updating your entities is a pretty big deal and that no automated tool should ever be used. Set the properties manually.

Yes its a very tiny amount of more code but automapper or running updatemodel on database entities can sometimes have unintended consequences. Better to make sure your writes are done correctly.

like image 87
John Farrell Avatar answered Sep 24 '22 15:09

John Farrell