Automapper v5.1.1 - 循环引用

Automapper v5.1.1 - Circular references

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

与大多数其他问题相关,我的问题与相互引用的模型有关。我很清楚我可以采用的其他方法,例如重构我的代码以为子项创建单独的 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();

结构如下:

但这并没有什么效果,我还是收到了一个WhosebugException。我错过了什么或做错了什么?

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

非常感谢!

(代表OP发表).

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