Я пытаюсь использовать 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, но я не могу заставить его работать.