0

我最近更新到最新版本的 Automapper (6.2.2) 以利用通过 .ReverseMap() 进行的展平。一切似乎都很顺利,直到我意识到它总是创建一个空对象,而不管展平的源属性是否具有值。完全可以理解,但为了防止这种情况,我尝试添加一个条件,如下所示:

cfg.CreateMap<Entity, DTO>()
    .ReverseMap()
        .ForMember(d => d.UnflattenedType, o => o.Condition(s => s.FlattenedId.HasValue));

这似乎不起作用,我一直在寻找解决方案太久了。

所以我的问题是,有没有办法在使用 ReverseMap 时有条件地阻止 automapper 初始化目标对象(取消扁平化)?

更新

我通过执行以下操作提出了解决方法,但我仍在寻找合适的解决方案。

cfg.CreateMap<Entity, DTO>()
    .ReverseMap()
        .AfterMap((s, d) => d.UnflattenedType = s.FlattenedId.HasValue ? d.UnflattenedType : null);
4

2 回答 2

1

根据 Automapper 的开发人员的说法,这在 6.2.2 版本中是不可能的。查看我在他们的 GitHub 上发布的这个问题以获取更多信息:

https://github.com/AutoMapper/AutoMapper/issues/2498

于 2018-03-26T12:56:46.977 回答
0

你试过 ForPath 吗?

cfg.CreateMap<Entity, DTO>()
    .ReverseMap()
        .ForPath(d => d.UnflattenedType, o => o.MapFrom(s => s.FlattenedId.HasValue ? s.FlattenedId : null));
于 2018-01-12T22:14:50.623 回答