使用Automapper进行深层映射 [英] Deep level mapping using Automapper
本文介绍了使用Automapper进行深层映射的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用多级成员映射对象: 这些是类:
I am trying to map objects with multi-level members: these are the classes:
public class Father
{
public int Id { get; set; }
public Son Son { get; set; }
}
public class FatherModel
{
public int Id { get; set; }
public int SonId { get; set; }
}
public class Son
{
public int Id { get; set; }
}
这是我尝试自动映射的方式:
This is how I try automap it:
AutoMapper.Mapper.CreateMap<FatherModel , Father>()
.ForMember(dest => dest.Son.Id, opt => opt.MapFrom(src => src.SonId));
这是我得到的例外:
表达式'dest => Convert(dest.Son.Id)'必须解析为顶级 成员,而不是任何子对象的属性.在上使用自定义解析器 子类型或AfterMap选项.参数名称: lambdaExpression
Expression 'dest => Convert(dest.Son.Id)' must resolve to top-level member and not any child object's properties. Use a custom resolver on the child type or the AfterMap option instead. Parameter name: lambdaExpression
谢谢
推荐答案
这既适用于映射到新对象,也适用于现有对象.
This will work both for mapping to a new or to an existing object.
Mapper.CreateMap<FatherModel, Father>()
.ForMember(x => x.Son, opt => opt.MapFrom(model => model));
Mapper.CreateMap<FatherModel, Son>()
.ForMember(x => x.Id, opt => opt.MapFrom(model => model.SonId));
这篇关于使用Automapper进行深层映射的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文