【发布时间】:2019-11-07 10:45:28
【问题描述】:
我正在尝试将 AutoMapper 用于通常的场景 Dto -> Entity。但是 Dto 的属性之一应该映射到我的实体的孩子。
我的员工 DTO 有一个 int 类型的属性 JobTitleId。 我的员工实体有一个子实体 JobTitle,它的属性为 id。这是我要映射到的地方。所以总结起来会是这样的:
EmployeeDto.JobTitleId ---> Employee.JobTitle.Id
唯一对我有用的是添加一个自定义自动映射器解析器,但是当我需要为许多不同但相似的场景这样做时,它变得太讨厌了。
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,但不能让它工作。
【问题讨论】:
标签: c# .net-core automapper