C# 自动映射:最大图形深度

C# 自动映射:最大图形深度,c#,automapper-3,C#,Automapper 3,我有以下与列表相关的实体: 国家->地区->市政->街道 当我将一个国家对象映射到我的DTO时,AutoMapper会自动投影我的整个图形,一直投影到街道,这是一个很好的默认设置。 在一个特定的用例中,我只想映射根对象(国家)及其直接子对象(地区)。这些地区应该有一个空的市镇列表(或空) 实现这一点的一种方法是创建如下地图: Mapper.CreateMap<Data.Country, Dto.Country>(); Mapper.CreateMap<Data.Region,

我有以下与列表相关的实体:

国家->地区->市政->街道

当我将一个国家对象映射到我的DTO时,AutoMapper会自动投影我的整个图形,一直投影到街道,这是一个很好的默认设置。 在一个特定的用例中,我只想映射根对象(国家)及其直接子对象(地区)。这些地区应该有一个空的市镇列表(或空)

实现这一点的一种方法是创建如下地图:

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

这意味着,在将某个区域投影为根对象时,其城市列表将被忽略。解决方法是为每个可能的根对象创建单独的ConfigurationStore对象,但这会导致许多不同的ConfigurationStore。有没有办法告诉AutoMapper只映射到对象图中的某个深度?

是的,您可以这样定义特定于映射的
MaxDepth

Mapper.CreateMap<Source, Destination>().MaxDepth(1);
Mapper.CreateMap().MaxDepth(1);
更多信息:

是的,您可以这样定义特定于地图的
MaxDepth

Mapper.CreateMap<Source, Destination>().MaxDepth(1);
Mapper.CreateMap().MaxDepth(1);
更多信息:
要设置所有映射项的最大深度,请执行以下操作:

Mapper.Initialize(cfg =>
{
     cfg.ForAllMaps((typeMap, mappingExpression) => mappingExpression.MaxDepth(1));
}


要设置所有映射项的最大深度,请执行以下操作:

Mapper.Initialize(cfg =>
{
     cfg.ForAllMaps((typeMap, mappingExpression) => mappingExpression.MaxDepth(1));
}


如何为所有地图设置此选项?像MaxDepth的默认值一样,如何为所有贴图设置此值?类似于MaxDepth的默认值