簡體   English   中英

自動映射將枚舉的集合映射到視圖模型集合中

[英]Automapper mapping collection of enums into view model collection

  • AutoMapper 5.3.0 alpha(尚未升級到最新最好)

我有一個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字段,為了簡潔起見,這是一個自動增量。

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,我認為可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM