我有一个会议,其中有一个相关会议的清单.我希望顶级会议提供相关会议的清单,但要停在那里.
我尝试了以下但是当将maxDepth设置为1时,我对第一个孩子变为null.将maxDepth设置为2时,我得到了一个库存溢出.如果有人知道如何解决这个帮助表示赞赏.谢谢,亚历克斯
Mapper.CreateMap<Data.Conference, Dto.Conference>().MaxDepth(2);
Run Code Online (Sandbox Code Playgroud)
第一次使用automapper,让我试着用MaxDepth解释我想要解决的问题:
会议有一份相关会议清单.因此,会议A有一个相关的会议B.会议B有一个相关的会议A.
现在我发送一个WCF会议列表.清楚地通过线路发送会议A将导致堆栈溢出.是否可以使用automapper来防止这种情况,同时保持第一级关联会议
System.StackOverflowException我在尝试在 AutoMapper 5 中映射以前在 AutoMapper 4 中使用的某些内容时遇到了问题。
经过一番谷歌搜索后,我发现它是由Circularreferences引起的。
AutoMapper 文档说:
以前,AutoMapper 可以通过跟踪映射的内容来处理循环引用,并在每个映射上检查源/目标对象的本地哈希表以查看该项目是否已映射。事实证明,这种跟踪非常昂贵,您需要选择使用 PreserveReferences 才能使圆形地图发挥作用。或者,您可以配置 MaxDepth:
Run Code Online (Sandbox Code Playgroud)// Self-referential mapping cfg.CreateMap<Category, CategoryDto>().MaxDepth(3); // Circular references between users and groups cfg.CreateMap<User, UserDto>().PreserveReferences();
所以我添加.MaxDepth(3)到我的代码中,它现在又可以工作了。
但是我不明白真正的问题是什么以及我通过添加该行做了什么:)
我的问题:
.MaxDepth()?为什么示例中使用 3?.PreserveReferences()为了什么?