Automapper问题记录

在Automapper使用中会碰到一些未能映射或者错误的问题,这些问题可能会常常忘记如何处理,想到一些就记录一些:app

  • 映射值有时为空又不报错的状况

  这极可能是因为目标类中的部分属性有问题致使的,最简单的方式为使用排除法,将可能有问题的属性Ignore掉。嵌套类型也能够这样排查。spa

 

  • ProjectTo时,ForMember不可以使用延迟加载

  如下为例,不加ToList()则Actions的值是延迟映射,结果是没法正确获取的,或者会致使获取时针对CommonAction生成大量SQL语句code

CreateMap<View, ViewDto>()
            .ForMember(d => d.ParentName, s => s.MapFrom(x => x.ParentID.HasValue ? x.ParentView.Name : null))
            .ForMember(d => d.ParentUrl, s => s.MapFrom(x => x.ParentID.HasValue ? x.ParentView.URL : null))
            .ForMember(d => d.ShowInMenu, s => s.MapFrom(x => x.Show))
            .ForMember(d => d.Actions, s => s.MapFrom(x => x.ViewAction.Select(ca => ca.CommonAction.Name).OrderBy(ca => ca).ToList()))
            .ForMember(d => d.Level, s => s.Ignore())
            .ForMember(d => d.IsLeaf, s => s.Ignore())
            .ForMember(d => d.Icon, s => s.Ignore())

  正常:blog

  

 

  不然:io

相关文章
相关标签/搜索