用automapper映射孩子的孩子

时间:2018-03-14 11:39:33

标签: c# automapper

我有以下型号:

class Page{
  List<Version> Versions
}

class Version {
  List<ContentControl> ContentControls
}

我要映射到:

 class Page{    
    List<PageVersion> PageVersions
 }

 class PageVersion {
    List<PageControl> PageControls
 }

我有以下代码将页面映射到页面并将版本映射到PageVersions。

CreateMap<Models.Page, vitaminW.Core.Entities.Models.Page>()
                .ForMember(p => p.PageVersions, opt => opt.MapFrom(p => p.Versions));

这样可以正常工作,并且PageVersions会被填充。

但是,我正在努力将ContentControls映射到PageControls。

如果我添加以下映射:

CreateMap<Models.PageVersion, vitaminW.Core.Entities.Models.PageVersion>()
          .ForMember(m => m.PageControls, opt => opt.MapFrom(o => o.ContentControls));

我收到以下错误:

Error mapping types.

Mapping types:
Page -> Page
vitaminW.Public.Presentation.Models.Page -> vitaminW.Core.Entities.Models.Page


Type Map configuration:

Page -> Page
vitaminW.Public.Presentation.Models.Page -> vitaminW.Core.Entities.Models.Page

Property:
PageVersions

我查了一下MapAfter,但是我不确定如何用已经映射过的孩子做这个。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您尚未声明已添加ContentControlPageControl

的映射
CreateMap<Models.ContentControl, vitaminW.Core.Entities.Models.PageControl>();

看起来AutoMapper无法在两种类型之间找到地图而失败。