Automapper将Viewmodel映射到具有相同名称的Model

时间:2014-08-28 09:50:47

标签: c# asp.net-mvc automapper

视图模型

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

实体类申请人

public string SurName { get; set; }

实体类FamilyMember

public string SurName { get; set; }

Automapper配置

        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从viewmodel映射到实体类Applicant和FamilyMember中的Surname。是否可以为特定类型指定前缀

1 个答案:

答案 0 :(得分:0)

您必须使用ForMemeber方法自定义地图,并使用MapFrom选项方法进行示例:

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

然后,AutoMapper会将Personal_Data_Surname viewModel的属性映射到SurName实体的属性。对另一个实体做。