自动映射器将Viewmodel映射到具有相同名称的Model

本文关键字:映射 Model Viewmodel | 更新日期: 2023-09-27 18:19:39

Viewmodel

public string Personal_Data_Surname { get; set; }
public string FamilyMember_SurName { get; set; }

实体类申请人

public string SurName { get; set; }

实体类FamilyMember

public string SurName { get; set; }

自动映射器配置

        Mapper.Configuration.RecognizePrefixes("Personal_Data_");
        Mapper.CreateMap<ApplicationViewModel, Applicant>();
        Mapper.Configuration.RecognizePrefixes("FamilyMember_");
        Mapper.CreateMap<ApplicationViewModel, FamilyMember>();

控制器代码映射实体

Applicant applicant = Mapper.Map<ApplicationViewModel, Applicant>(vaModel);
FamilyMember familyMember = Mapper.Map<ApplicationViewModel, FamilyMember>(vaModel);

问题是它将Personal_Data_Surname从视图模型映射到实体类"申请人"answers"家庭成员"中的姓氏。是否可以为特定类型的指定前缀

自动映射器将Viewmodel映射到具有相同名称的Model

您必须使用ForMemeber方法和MapFrom选项方法自定义映射,例如:

Mapper.CreateMap<ApplicationViewModel, Applicant>()
       .ForMember(viewModel => viewModel.Personal_Data_Surname, 
                  opt => opt.MapFrom(entity => entity.SurName));

然后,AutoMapper将把Personal_Data_Surname视图模型的属性映射到SurName实体的属性。对其他实体执行此操作。