Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# 自动映射二级映射_C#_.net_Mapping_Automapper_Automapping - Fatal编程技术网

C# 自动映射二级映射

C# 自动映射二级映射,c#,.net,mapping,automapper,automapping,C#,.net,Mapping,Automapper,Automapping,我的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 Cpr

我的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>();
MapperTools MapperTools服务=
新的MapperTools(MappingHelper);
mapperToolsService.MappingConfig.Configuration.CreateMap()
.ForMember(dest=>dest.Bprop,opt=>opt.MapFrom(src=>src.DatabaseB));
mapperToolsService.MappingConfig.Configuration.CreateMap();

请问,我的代码怎么了?

实际上这是三级映射

为类C添加映射,就像为类B添加映射一样。 扩展B类的映射以覆盖Cprop

假设DatabaseX具有与目标类(A、B、C)中的Xprop字段相对应的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>();
Mapper.CreateMap()
.ForMember(dest=>dest.Bprop,opt=>opt.MapFrom(src=>src.Bprop));
Mapper.CreateMap()
.ForMember(dest=>dest.Cprop,opt=>opt.MapFrom(src=>src.Cprop));
CreateMap();
下面是一个工作示例: