简体   繁体   English

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

[英]Automapper map Viewmodel to Model with same name

Viewmodel 视图模型

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

Entity class Applicant 实体类申请人

public string SurName { get; set; }

Entity class FamilyMember 实体类FamilyMember

public string SurName { get; set; }

Automapper Config 自动映射器配置

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

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

Controller code mapping entities 控制器代码映射实体

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

The problem is that it maps Personal_Data_Surname from the viewmodel to the Surname in entity class Applicant and FamilyMember. 问题在于,它会将ViewModel中的Personal_Data_Surname映射到实体类Applicant和FamilyMember中的Surname。 Is it possible to specify a prefix for a specific type 是否可以为特定类型指定前缀

You have to customize your mapping using ForMemeber method, with the MapFrom option method, for sample: 您必须使用ForMemeber方法和MapFrom选项方法来自定义样本:

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

Then, AutoMapper will map the Personal_Data_Surname viewModel's property to SurName entity's property. 然后,AutoMapper将把Personal_Data_Surname viewModel的属性映射到SurName实体的属性。 Do it to another entities. 对另一个实体进行。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM