我最近更新到最新版本的 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);