#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:
Решение:
- Сопоставление хэш-набора со списком GeneralInformation>()
cfg.CreateMap<LDT001002_FILE_MST,
.ForMember(dest => dest.FileStatus, opt => opt.MapFrom(
src => src.LDT001201_FILE_STATUS_DTL));
- Сопоставление внешних ссылок со списком:
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));