Automapper:我可以使用CreateMap创建的相同规则来映射两种方式吗?

本文关键字:规则 映射 两种 方式吗 我可以 可以使 创建 CreateMap Automapper | 更新日期: 2023-09-27 18:02:11

我对映射的方向有点困惑。

这是创建映射。

Mapper.CreateMap<Dimension, PostedDimensionViewModel>()
            .ForMember(dto => dto.inputDimension, opt => opt.MapFrom(p => p.DimensionName))
            .ForMember(dto => dto.inputDescription, opt => opt.MapFrom(p => p.Description));

然后我可以这样使用它从PostedDimensionViewModel => Dimension:

Dimension dimension = Mapper.Map<PostedDimensionViewModel, Dimension>(model);

如果,我想去从Dimension => PostedDimensionViewModel,我需要另一个CreateMap或者我可以使用相同的上面的映射从两个方向?

谢谢你的帮助。

Automapper:我可以使用CreateMap创建的相同规则来映射两种方式吗?

就这样做:

Mapper.CreateMap<Source, Destination>()
    /* your other stuff here */
    .ReverseMap();

这里有限制,我不建议这样做,除非在两个dto之间。

是的,如果您打算使用另一个方向,则需要提供额外的地图。如果你试图在没有额外映射的情况下使用AutoMapper,你会得到一个异常:

AutoMapperMappingException:缺少类型映射配置或不支持映射。

映射类型:

PostedDimensionViewModel→维