Отображение из свойства типа примитива в дочерний объект - PullRequest
1 голос
/ 07 ноября 2019

Я пытаюсь использовать AutoMapper для обычного сценария Dto -> Entity. Но одно из свойств Dto должно соответствовать дочернему объекту моей сущности.

DTO моего сотрудника имеет свойство типа int, JobTitleId. У моего сотрудника есть дочерний объект JobTitle, у которого есть свойство id. Это где я хочу на карту. Подводя итог, можно сказать, что это будет что-то вроде:

EmployeeDto.JobTitleId ---> Employee.JobTitle.Id

Единственное, что сработало для меня, это добавление Custom Automapper Resolver, но это становится слишком неприятным, когда мне нужно сделать это для многих разных, но похожих сценариев.

class EmployeeDto
{
  int JobTitleId; 
}

Class Employee
{
  JobTitle jobTitle;
}

Class JobTitle
{
  int Id; 
}

Я хотел бы что-то похожее на это:

public class EmployeeMapperProfiles : Profile
{
  public EmployeeMapperProfiles()
  {
    CreateMap<EmployeeDto, Employee>()
      .ForMember(dest => dest.JobTitle.Id,
         opt => opt.MapFrom(src => src.JobTitleId));    
  }
}

Однако мой результат с таким подходом:

System.ArgumentException: 'Expression 'dest => dest.JobTitle.Id' must resolve to top-level member and not any child object's properties. You can use ForPath, a custom resolver on the child type or the AfterMap option instead. (Parameter 'lambdaExpression')'.

Но подходы AfterMap и пользовательского распознавателяне то, что я хочу. Так что это должно быть ForPath, но я не могу заставить его работать.

...