所以错误是这样的:表达式必须解析为顶级成员,而不是任何子对象的属性。
DTO 中的薪酬是一个枚举。ContractEntity 使用一个复杂类型的报酬。
抛出错误的代码:
Mapper.CreateMap<ContractDTO, ContractEntity>()
.ForMember(d => d.Remuneration.ContractType, s => s.MapFrom(z => z.ContractType))
.ForMember(d => d.Remuneration.Currency, s => s.MapFrom(z => z.Currency))
.ForMember(d => d.Remuneration.RateUnit, s => s.MapFrom(z => z.RateUnit));
实体框架复杂类型:
[ComplexType]
public class Remuneration
{
public decimal Amount { get; set; }
public int Currency { get; set; }
public int RateUnit { get; set; }
public int ContractType { get; set; }
}
因为我希望目标(ContractEntity)使用整数值,所以我想我可以将源枚举转换为目标整数,如下所示:
.ForMember(d => d.Remuneration.ContractType, s => s.MapFrom(z => (int)z.ContractType))
..显然我不能,并希望有人能澄清为什么这不起作用..