枚举到视图模型集合
问题描述:
- 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字段,这是一个自动增量。
答
定义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的开箱,我觉得还可以。