AutoMapper: Max graph depth

Anders Jakobsen picture Anders Jakobsen · Jul 20, 2014 · Viewed 7k times · Source

I have the following entities which are connected with lists:

Country -> Region -> Municipality -> Street

When I map a Country object to my DTO, AutoMapper automatically projects my entire graph, all the way down to Streets, which is a great default. In a specific usecase I would like to map just the root object (Country) and its immediate children (Regions). These regions should then have en empty list of Municipalities (or null).

One way to achieve this is to create a map like this:

Mapper.CreateMap<Data.Country, Dto.Country>();
Mapper.CreateMap<Data.Region, Dto.Region>()
  .ForMember(dest => dest.Municipalities, opt => opt.Ignore())

This would mean that when projecting a Region as the root object, its list of Municipalities will be ignored. A workaround for this is to create separate ConfigurationStore objects for each possible root object, but that would result in a lot of different ConfigurationStores. Is there any way to tell AutoMapper to only map down to a certain depth in the object graph?

Answer

vipasane picture vipasane · Mar 12, 2015

Yes, you can define map specific MaxDepth like so:

Mapper.CreateMap<Source, Destination>().MaxDepth(1);

More info: https://docs.automapper.org/en/stable/Attribute-mapping.html?highlight=maxdepth