Предложения по отображению сложных отношений Automapper

#c# #list #automapper #hashset #flatten

#c# #Список #automapper #hashset #сгладить

Вопрос:

Я пытаюсь отобразить сложный тип объекта и натыкаюсь на стену, когда дело доходит до вложенных отношений.

В основном, вот моя сущность EF:

  public partial class LDT001002_FILE_MST
    {
        public LDT001002_FILE_MST()
        {
            this.LDT001201_FILE_STATUS_DTL = new HashSet<LDT001201_FILE_STATUS_DTL>();
    ... }
        public virtual ICollection<LDT001201_FILE_STATUS_DTL> LDT001201_FILE_STATUS_DTL { get; set; }

  

Это LDT001201_FILE_STATUS_DTL:

     public partial class LDT001201_FILE_STATUS_DTL
    {
        public System.Guid FILE_STATUS_DTL_ID { get; set; }
    ...
    }

  

И вот viewmodel, используемая с automapper:

  public class GeneralInformation
    {
    ...
        public List<FileStatuses> FileStatuses { get; set; }
    ...
    }

  public class FileStatuses : GeneralInformation { 

        public Guid FILE_STATUS_DTL_ID { get; set; }
        [DisplayName("Date Initiated")]

}

I tried multiple CreateMap configurations but all throw unmapped errors about the object on Mapper.Map for these 2 models... any suggestions from Automapper veterans are welcome!
  

Ответ №1:

Решение:

  1. Сопоставление хэш-набора со списком GeneralInformation>()
 cfg.CreateMap<LDT001002_FILE_MST, 
    .ForMember(dest => dest.FileStatus, opt => opt.MapFrom(
        src => src.LDT001201_FILE_STATUS_DTL));
  
  1. Сопоставление внешних ссылок со списком:
  cfg.CreateMap<LDT001201_FILE_STATUS_DTL, FileStatuses>()
    .ForMember(dest => dest.LOC_ID, opt => opt.MapFrom(src => src.LDT001013_LOC_MST.LOC_ID))
    .ForMember(dest => dest.LOC_NM, opt => opt.MapFrom(src => src.LDT001013_LOC_MST.LOC_NM))
    .ForMember(dest => dest.STATUS_ID, opt => opt.MapFrom(src => src.LDT001601_STATUS_LKP.STATUS_ID))
    .ForMember(dest => dest.STATUS_NM, opt => opt.MapFrom(src => src.LDT001601_STATUS_LKP.STATUS_NM));