Простой способ отобразить сложную модель - это объявить и отобразить их от самых простых (с нативными типами, например: strings, int, ...) до сложных.
Итак, вы должны создать простые сопоставления для ContactCreateRequest с ContactCreateDTO с помощью CreateMap (и других самых простых). Тогда вам нужно будет создать что-то вроде:
MapFrom позволяет вам указывать свойство (причину, если имя по-другому) для сопоставления. Это также позволяет вам указать результат из предопределенного отображения, вы просто сообщаете ему, из какого элемента вы хотите отобразить ...
Mapper.CreateMap<ApplicationCreateRequest, ApplicationCreateDTO>()
.ForMember(g => g.FirstName, opt => opt.MapFrom(src => src.FirstName));
.ForMember(g => g.LastName, opt => opt.MapFrom(src => src.LastName));
.ForMember(g => g.Contact, opt => opt.MapFrom(src => Mapper.Map<ContactCreateRequest,ContactCreateDTO>(g.Contact)));
.ForMember(g => g.Demographic, opt => opt.MapFrom(src => Mapper.Map<DemographicCreateRequest,DemographicCreateDTO>(g.Demographic)));
.ForMember(g => g.Education, opt => opt.MapFrom(src => Mapper.Map<EducationCreateRequest,EducationCreateDTO>(g.Education)));
.ForMember(g => g.Work, opt => opt.MapFrom(src => Mapper.Map<WorkCreateRequest,WorkCreateDTO>(g.Work)));
Вы можете создать с помощью
.ForMember (g => g.Property, opt => opt.Ignore ()); // игнорировать отображение свойства
Полезное примечание, определите базовое отображение перед сложными, иначе у вас будут проблемы!
Надеюсь, это поможет.