c# – AutoMapper MaxDepth()方法

在我的项目中,我与客户有一对多的关系 – >项目.因此,在我的一个视图中,我试图显示属于该客户端的所有项目.所以我有一个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没有问题.

上一篇:c# – AutoMapper将2个表中的记录连接到单个IEnumerable视图模型中


下一篇:C#强制操作符?