Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自动映射:我可以使用CreateMap创建的相同规则来双向映射吗?_C#_.net_Automapper - Fatal编程技术网

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的构建:)