2014-05-12 3 views
0

이 개 수준은, 나는 1 개 수준에 매핑 할 수 있지만 두 가지 수준의는 Automapper 내 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>(); 

제발, 내 코드에 문제가 있나요?

답변

1

실제로 이것은 3 단계 매핑입니다.

클래스 B에 대한 매핑을 클래스 C에 추가하십시오. Cprop를 포함하도록 클래스 B에 대한 매핑을 확장하십시오.

여기
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

+0

확실히 st4hoo : DatabaseX는 (A, B, C)은 다음과 같아야 대상 수업은 xprop 필드에 대응은 xprop 필드를 가지고 있다고 가정

D –