5

在我的项目中,我有一个一对多的关系Client -> Projects。因此,在我的一个观点中,我试图展示属于该客户的所有项目。所以我有一个IEnumerable<ProjectDetailsViewModel>代表所有客户项目的项目。

问题是,ProjectDetailsViewModel有一个ClientDetailsViewModel,然后有一个IEnumerable<ProjectDetailsViewModel>,依此类推,创建了相同实体的无限循环。

这是否适合在该 .ForMember() 上使用 MaxDepth() 方法?如果是这样,在这种情况下我该如何使用它,如果不是,解决方案是什么?

我已经尝试过 MaxDepth(1) Client,虽然这可以防止 StackOverflow 异常,但它不会在该客户端的视图模型中保存任何数据。

4

1 回答 1

5

问题是我这样明确地调用了 AutoMapper AutoMapConfig

.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 次递归后停止,因为我已经有了一张地图,Client -> ClientDetailsViewModel所以没有问题。

于 2013-01-14T14:12:59.440 回答