1

我知道这可能会被标记为重复问题,是的,我确实查看了可能已经回答了我的问题但仍然找不到答案的问题。

正如大多数其他问题所涉及的那样,我的问题与相互引用的模型有关。我很清楚我可以遵循的其他方法,例如重构我的代码为子级创建单独的 DTO 对象。问题是,模型非常多,重构一切都会非常麻烦。

我阅读了 Automapper v5.0 升级指南,其中说明了以下内容:

在此处输入图像描述

我试过了 - 例如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. 我错过了什么或做错了什么?

如果这不是要走的路,我愿意接受建议。

非常感谢!

4

1 回答 1

0

(代表 OP 发布)

它按预期运行 - 我只需要更新模型层次结构其余部分的映射配置文件。

于 2016-09-02T10:35:10.510 回答