自动两级映射
本文关键字:两级 映射 | 更新日期: 2023-09-27 18:02:50
我的AutoMapper配置有问题,我可以映射一个级别,但我不知道是否存在映射两个级别的方法
我:
Class A
{
public int id {get; set;}
public string nom {get; set;}
public B Bprop {get; set;}
}
Class B
{
public int id {get; set;}
public string nom {get; set;}
public C Cprop {get; set;}
}
Class C
{
public int id {get; set;}
public string nom {get; set;}
}
我的配置代码如下,如果我从class B
中删除Cprop
,它就会工作:
MapperTools<DatabaseA, A> mapperToolsService =
new MapperTools<DatabaseA, A>(MappingHelper);
mapperToolsService.MappingConfig.Configuration.CreateMap<DatabaseA, A>()
.ForMember(dest => dest.Bprop , opt => opt.MapFrom(src => src.DatabaseB));
mapperToolsService.MappingConfig.Configuration.CreateMap<DatabaseB,B>();
请问,我的代码有什么问题?
实际上这是三层映射。
为类C添加映射,就像为类B添加映射一样。扩展类B的映射以覆盖Cprop。
假设DatabaseX的Xprop字段对应于目标类(A, B, C)中的Xprop字段,它应该是这样的:
Mapper.CreateMap<DatabaseA, A>()
.ForMember(dest => dest.Bprop , opt => opt.MapFrom(src => src.Bprop));
Mapper.CreateMap<DatabaseB,B>()
.ForMember(dest => dest.Cprop , opt => opt.MapFrom(src => src.Cprop));
Mapper.CreateMap<DatabaseC, C>();
下面是工作示例:https://github.com/st4hoo/Automapper3LevelMappingExample