2017-09-04 44 views
1

嵌套的子對象的屬性映射我有當前地圖:如何Automapper

CreateMap<Article, ArticleModel>() 
       .ForMember(dest => dest.BaseContentItem, opts => opts.MapFrom(src => src.BaseContentItem)) 
       .ForMember(dest => dest.BaseContentItem.TopicTag, opts => opts.MapFrom(src => src.BaseContentItem.TopicTag)) 
       .ForMember(dest => dest.MainImage, opts => opts.MapFrom(src => src.MainImage)) 
       .ReverseMap(); 

我得到的錯誤是:

System.ArgumentException: '表達' DEST => dest.BaseContentItem .TopicTag'必須解析爲頂級成員,並且不能解析任何子對象的屬性。改爲在子類型 類型或AfterMap選項上使用自定義解析器。'

如何映射這個?

+1

您需要ForPath而不是ForMember。 –

回答

0

如果有人遇到問題,我很奇怪。

我在單獨的映射配置文件中正確創建了所有孩子的地圖。問題在於其中一個子模型本身有一個TopicTag類型,所以它會導致堆棧溢出。我刪除了這個不必要的字段,現在它正確映射。

1

這應該工作。使用ForPath代替ForMember

`CreateMap<Article, ArticleModel>() 
       .ForMember(dest => dest.BaseContentItem, opts => opts.MapFrom(src => src.BaseContentItem)) 
       .ForPath(dest => dest.BaseContentItem.TopicTag, opts => opts.MapFrom(src => src.BaseContentItem.TopicTag)) 
       .ForMember(dest => dest.MainImage, opts => opts.MapFrom(src => src.MainImage)) 
       .ReverseMap();` 
+0

這不提供問題的答案。一旦你有足夠的[聲譽](https://stackoverflow.com/help/whats-reputation),你將可以[對任何帖子發表評論](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提問者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [來自評論](/ review/low-quality-posts/18013879) – Mamun