Assuming the objects you're mapping with AutoMapper require no custom mappings, is there ever a point in doing this:
Mapper.CreateMap<Src, Dest>();
// ....
Mapper.Map(SrcObject, DestObj);
If no custom mappings are required, does the above approach gain you anything over just using DynamicMap without the need for any prior configuration?
Mapper.DynamicMap(SrcObject, DestObj);
I do understand that DynamicMap
is required when you're mapping anonymous types, but I'm asking about whether DyanmicMap
is ever not preferred for static types that require no custom mappings.
Automapper is considerably faster when mapping a List<T> of objects on . NET Core (It's still slower on full . NET Framework).
If you have to do complex mapping behavior, it might be better to avoid using AutoMapper for that scenario. Reverse mapping can get very complicated very quickly, and unless it's very simple, you can have business logic showing up in mapping configuration.
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.
Been a while since I last used Automapper, but if I remember correctly:
In order to use Map
, you need to specify those Maps explicitly first via CreateMap
. Afterwards you can validate your Configuration by calling AssertConfigurationIsValid
.
This happens right after launching your application rather than encountering an error mid execution (given that you create the mappings and validate on startup, which is recommended).
Also some types do not match 1:1, so you would want to specify the exact mappings, not sure if DynamicMap
makes use of the Maps you have introduced manually, actually I think it does not.
Just checked, DynamicMap
falls back on existing Maps in the current version up on github.
It's also a matter of performance since DynamicMap
uses reflection more heavily than the Map
method, since you have already specified the mapping configuration and most of it does not have to bee asserted on the fly anymore. Not sure if the new version of Automapper is performing caching in this regard by now though.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With