2013-02-12 32 views
3

我嘗試了以下地圖:必須解析到頂級成員

CreateMap<ThemeNewModel, CreateThemeOrder.ThemeModel>() 
    .ForMember(d => d.Subject.Id, o => o.MapFrom(s => s.Subject)); 

兩個Subject.IdSubjectint類型。但是,我收到以下錯誤:

Expression 'd => Convert(d.Subject.Id)' must resolve to top-level member and not any child object's properties. Use a custom resolver on the child type or the AfterMap option instead.Parameter name: lambdaExpression

我正在使用AutoMapper 2.0。如果沒有AfterMap,我不能解決這個問題嗎?

回答

3

ThemeNewModel.Subject是什麼類型的?假設其ThemeSubject,你可能有成功的東西,如:

CreateMap<ThemeSubject, CreateThemeOrder.ThemeModel>() 
    .ForMember(d=>d.Id, o => o.MapFrom(s->s.Subject)); 
CreateMap<ThemeNewModel, CreateThemeOrder.ThemeModel>() 
    .ForMember(d=>d.Subject, o => o.MapFrom(s => s); 

如果上述方法不工作,你應該遵循異常的提醒,並創建一個自定義的解析器。

無論如何,automapper被設計爲從複雜類型到扁平模型/視圖模型類型,因此您的ThemeNewModel太複雜,也許您需要重新考慮您的設計。

相關問題