2017-04-06 71 views
1
  • AutoMapper 5.3.0阿爾法Automapper映射集(尚未升級到最新和最偉大的)

我有一個DTO如下:枚舉到視圖模型集合

public class AoACrudFieldValuesGdataHealthInput 
{ 
    public AoACrudFieldValuesGdataHealthInput() 
    { 
     PrevHealthAssessment = new HashSet<HealthPrevHealthAssessmentEnum>(); 
    } 

    public HashSet<HealthPrevHealthAssessmentEnum> PrevHealthAssessment { get; set; } 
} 

和的EF POCO:

[Table("Health", Schema = "gdata")] 
public class GdataHealthTableModel : AuditedEntity 
{ 
    public GdataHealthTableModel() 
    { 
     //PrevHealthAssessment = new HashSet<HealthPrevHealthAssessmentEnum>(); 
    } 

    [ForeignKey("Id")] 
    public ICollection<GdataHealthPrevAssesmentTableModel> PrevHealthAssessment { get; set; } 
} 

和:

[Table("HealthPrevAssesment", Schema = "gdata")] 
public class GdataHealthPrevAssesmentTableModel : AuditedEntity 
{ 
    public HealthPrevHealthAssessmentEnum Assessment { get; set; } 
} 

我需要延長我的地圖的幫助:

CreateMap<AoACrudFieldValuesGdataHealthInput, GdataHealthTableModel>(); 

這樣AoACrudFieldValuesGdataHealthInput.PrevHealthAssessment在GdataHealthTableModel.PrevHealthAssessment結束。目前我得到一個錯誤,因爲我的CreateMap()不夠詳細 - 當然。

這可能嗎?還是我讓映射器忽略該字段並手動執行?

注意:爲了簡潔起見,對於兩個EF POCO我都省略了Id字段,這是一個自動增量。

回答

0

定義HealthPrevHealthAssessmentEnum額外的地圖 - >GdataHealthPrevAssesmentTableModel

CreateMap<AoACrudFieldValuesGdataHealthInput, GdataHealthTableModel>() 
    .ForMember(dest => dest.PrevHealthAssessment, o => o.MapFrom(src => src.PrevHealthAssessment)); 

CreateMap<HealthPrevHealthAssessmentEnum, GdataHealthPrevAssesmentTableModel>() 
    .ForMember(dest => dest.Id, o => o.Ignore()) // auto ID 
    .ForMember(dest => dest.Assessment , o => o.MapFrom(src => src)); 

不知道AutoMapper可以一個ICollection的轉換到HashSet的開箱,我覺得還可以。