C# 自动映射:我可以使用CreateMap创建的相同规则来双向映射吗?
我对贴图的方向有点困惑 这是创建映射C# 自动映射:我可以使用CreateMap创建的相同规则来双向映射吗?,c#,.net,automapper,C#,.net,Automapper,我对贴图的方向有点困惑 这是创建映射 Mapper.CreateMap<Dimension, PostedDimensionViewModel>() .ForMember(dto => dto.inputDimension, opt => opt.MapFrom(p => p.DimensionName)) .ForMember(dto => dto.inputDescription, opt => opt
Mapper.CreateMap<Dimension, PostedDimensionViewModel>()
.ForMember(dto => dto.inputDimension, opt => opt.MapFrom(p => p.DimensionName))
.ForMember(dto => dto.inputDescription, opt => opt.MapFrom(p => p.Description));
Mapper.CreateMap()
.FormMember(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-Dimension=Mapper.Map(模型);
如果我想从维度=>PostedDimensionViewModel开始,我是否需要另一个CreateMap,或者我可以从两个方向使用上面相同的映射
谢谢你的帮助 是的,如果你想去另一个方向,你需要提供一张额外的地图。如果您尝试在没有额外映射的情况下使用AutoMapper,则会出现异常: AutoMappingException:缺少类型映射配置或映射不受支持 映射类型: PostedDimensionViewModel->Dimension 只要这样做:
Mapper.CreateMap<Source, Destination>()
/* your other stuff here */
.ReverseMap();
Mapper.CreateMap()
/*你的其他东西在这里*/
.ReverseMap();
这里有一些限制,除了在两个DTO之间,我不建议这样做。要小心,这样做的“双向”映射通常表示贫血域模型(),您需要创建另一个映射。(我用它来预填充包含表单数据的ViewModels,所以它并不总是一个贫乏的域,只是将您的域与视图数据分离)听这个家伙@Richard77说,他可能参与了AutoMapper的构建:)