我最近更新到最新版本的Automapper(6.2.2),以利用unflattening via .ReverseMap()。一切似乎进展顺利,直到我意识到无论平顶的源属性是否具有值,它总是创建一个空对象。完全可以理解,但为了防止这种情况,我尝试添加条件,如下:
cfg.CreateMap<Entity, DTO>()
.ReverseMap()
.ForMember(d => d.UnflattenedType, o => o.Condition(s => s.FlattenedId.HasValue));
这似乎不起作用,我现在一直在寻找解决方案。
所以我的问题是,有没有办法在使用ReverseMap时有条件地阻止automapper初始化目标对象(unflattening)?
更新
我通过执行以下操作找到了解决方法,但我仍在寻找合适的解决方案。
cfg.CreateMap<Entity, DTO>()
.ReverseMap()
.AfterMap((s, d) => d.UnflattenedType = s.FlattenedId.HasValue ? d.UnflattenedType : null);
答案 0 :(得分:1)
根据Automapper的开发人员的说法,从版本6.2.2开始,这是不可能的。看看我在他们的GitHub上发布的这个问题了解更多信息:
答案 1 :(得分:0)
你试过ForPath吗?
cfg.CreateMap<Entity, DTO>()
.ReverseMap()
.ForPath(d => d.UnflattenedType, o => o.MapFrom(s => s.FlattenedId.HasValue ? s.FlattenedId : null));