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

相關文章
相關標籤/搜索