C#学习教程:使用Automapper进行深层映射分享


使用Automapper进行深层映射

我试图用多级成员映射对象:这些是类:

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; } } 

这是我尝试自动化它的方式:

  AutoMapper.Mapper.CreateMap() .ForMember(dest => dest.Son.Id, opt => opt.MapFrom(src => src.SonId)); 

这是我得到的例外:

表达式’dest => Convert(dest.Son.Id)’必须解析为顶级成员而不是任何子对象的属性。 请在子类型或AfterMap选项上使用自定义解析程序。 参数名称:lambdaExpression

谢谢

这将适用于映射到新对象或现有对象。

 Mapper.CreateMap() .ForMember(x => x.Son, opt => opt.MapFrom(model => model)); Mapper.CreateMap() .ForMember(x => x.Id, opt => opt.MapFrom(model => model.SonId)); 

  AutoMapper.Mapper.CreateMap() .ForMember(x => x.Son, opt => opt.ResolveUsing(model => new Son() {Id = model.SonId})); 

如果它变得越来越复杂,你可以写一个ValueResolver类,参见这里的例子 – http://automapper.codeplex.com/wikipage?title=Custom%20Value%20Resolvers

上述就是C#学习教程:使用Automapper进行深层映射分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/960221.html

发表评论

邮箱地址不会被公开。 必填项已用*标注