在我的项目中,我与客户有一对多的关系 – >项目.因此,在我的一个视图中,我试图显示属于该客户端的所有项目.所以我有一个IEnumerable< ProjectDetailsViewModel>代表所有客户项目.
问题是ProjectDetailsViewModel有一个ClientDetailsViewModel,然后它有一个IEnumerable< ProjectDetailsViewModel>等等,创造出无穷无尽的相同实体循环.
这是否适合在.ForMember()上使用MaxDepth()方法?如果是这样,我在这种情况下如何使用它,如果没有,解决方案是什么?
我在客户端上尝试过MaxDepth(1),虽然这可以防止*异常,但它不会在该客户端的视图模型中保存任何数据.
解决方法:
问题是我使用AutoMapConfig显式调用了AutoMapper:
.ForMember(x => x.Client, opt => opt.MapFrom(src =>
AutoMapper.Mapper.Map<ClientDetailsViewModel>(src.Client)))
如果我只是将其定义为:
.ForMember(x => x.Client, opt => opt.MapFrom(src => src.Client))
AutoMapper将知道在1次递归后停止,因为我已经有来自客户端的地图 – > ClientDetailsViewModel没有问题.