我知道这可能会被标记为重复的问题,是的,我确实已经审核了可能已经回答了我的问题的问题,但仍然无法找到答案。
正如大多数其他问题所涉及的那样,我的问题与相互引用的模型有关。我很清楚我可以遵循的其他方法,比如重构我的代码以为孩子们创建单独的DTO对象。问题是,有相当多的模型和重构一切都会非常麻烦。
我阅读了Automapper v5.0 Upgrade Guide,其中说明了以下内容:
我已尝试过 - 例如ClientModel
:
var clientModelMap = CreateMap<Client, ClientModel>()
.ForMember(dest => dest.Id, source => source.MapFrom(x => x.ClientId))
.ForMember(dest => dest.InvoicePayments, source => source.Ignore());
clientModelMap.MaxDepth(1);
clientModelMap.PreserveReferences();
以及Project
模型:
var projectModelMap = CreateMap<Project, ProjectModel>()
.ForMember(dest => dest.Client, source => source.Ignore())
.ForMember(dest => dest.Id, source => source.MapFrom(x => x.ProjectId))
.ForMember(dest => dest.ClientName, source => source.MapFrom(x => x.Client.ClientName))
.ForMember(dest => dest.ClientTariff, source => source.MapFrom(x => x.Client.Tariff))
;
projectModelMap.MaxDepth(1);
projectModelMap.PreserveReferences();
结构如下:
但这没有效果,我仍然收到StackOverflowException
。我错过了什么或做错了什么?
如果不是这样的话,我愿意接受建议。
非常感谢!
答案 0 :(得分:0)
(代表OP发布)。
它按预期运行 - 我只需更新模型层次结构的其余部分的映射配置文件。