相关疑难解决方法(0)

AutoMapper自引用对象

我有一个会议,其中有一个相关会议的清单.我希望顶级会议提供相关会议的清单,但要停在那里.

我尝试了以下但是当将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来防止这种情况,同时保持第一级关联会议

c# asp.net-mvc wcf automapper

5
推荐指数
0
解决办法
1651
查看次数

迁移到 AutoMapper 5 - 循环引用

System.StackOverflowException我在尝试在 AutoMapper 5 中映射以前在 AutoMapper 4 中使用的某些内容时遇到了问题。

经过一番谷歌搜索后,我发现它是由Circularreferences引起的。

AutoMapper 文档说:

以前,AutoMapper 可以通过跟踪映射的内容来处理循环引用,并在每个映射上检查源/目标对象的本地哈希表以查看该项目是否已映射。事实证明,这种跟踪非常昂贵,您需要选择使用 PreserveReferences 才能使圆形地图发挥作用。或者,您可以配置 MaxDepth:

// Self-referential mapping
cfg.CreateMap<Category, CategoryDto>().MaxDepth(3);

// Circular references between users and groups
cfg.CreateMap<User, UserDto>().PreserveReferences();
Run Code Online (Sandbox Code Playgroud)

所以我添加.MaxDepth(3)到我的代码中,它现在又可以工作了。

但是我不明白真正的问题是什么以及我通过添加该行做了什么:)

我的问题:

  • 对于 Category/CategoryDto 而言,“循环引用”是什么意思?
  • 究竟是做什么的.MaxDepth()?为什么示例中使用 3?
  • .PreserveReferences()为了什么?

.net c# automapper automapper-5

2
推荐指数
1
解决办法
3518
查看次数

标签 统计

automapper ×2

c# ×2

.net ×1

asp.net-mvc ×1

automapper-5 ×1

wcf ×1