自动映射多对多stackoverflowexception

我正在为以下映射获得堆栈溢出:

Mapper.CreateMap() .ForMember(x => x.Children, o => o.MapFrom(x => x.Children.ConvertToChildrenViewModel())); Mapper.CreateMap() .ForMember(x => x.Parents, o => o.MapFrom(x => x.Parents.ConvertToParentViewModel())); 

我理解为什么会发生这种情况,这显然是一个无限循环。 我怎么能让它在automapper中工作? 我需要父母了解他们的孩子和他们的孩子,以了解他们的父母。 我是否必须为不包含Parents.Children属性的Children.Parents创建另一个ViewModel

扩展方法示例,类似于儿童:

 public static IList ConvertToParentViewModel(this IEnumerable parents) { return Mapper.Map<IList>(parents); } 

AutoMapper确实跟踪映射的内容,但仅在单个Map调用的上下文中,而不是对Mapper.Map的多个外部调用。

您不应该在映射配置上使用ForMember部分。 如果删除它,AutoMapper将遍历父/子关系并跟踪已映射的内容。

您可以使用MaxDepth设置进行递归映射。 我以前从未使用它,但它可能会帮助你。 您在类型映射上设置它:

 Mapper.CreateMap(...).MaxDepth(5)