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

时间:2014-05-08 02:07:40

标签: c# .net automapper

我对映射的方向有点混淆。

这是创建映射。

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 =&gt;尺寸

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

如果,我想要从 Dimension =&gt; PostedDimensionViewModel ,我是否需要另一个 CreateMap ,或者我可以从两个方向使用相同的上述映射?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

这样做:

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

这里有一些限制,除了两个DTO之外,我不建议这样做。

答案 1 :(得分:1)

是的,如果您打算向另一个方向前进,则需要提供额外的地图。如果您尝试在没有额外地图的情况下使用AutoMapper,您将获得例外:

  

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

     

映射类型:

     

PostedDimensionViewModel - &gt;尺寸