我们使用Automapper将我们的实体(从EF /数据库)映射到视图模型。我们的项目涉及与名为Classification
的类有关系的实体,该类具有一堆属性,每个属性都具有DisplayName
属性。
每当我们有这样的视图模型时:
public class PersonViewModel{
public string Nationality{get;set;}
public string Gender {get;set;}
public string HairColour {get;set;}
}
我们的实体可能是(这不是一个真实的例子)
public class Person {
public Classification Classification {get;set;}
public string Name {get;set;}
}
public class Classification {
public Gender Gender {get;set;}
public HumanHairColour HairColour {get;set;}
public Nationality Nationality {get;set;}
}
并且Classification
中的每个属性类都有一个DisplayName
属性,如
public class Gender {
public string DisplayName { get; set; }
public int Id { get; set; }
}
public class Nationality {
public string DisplayName { get; set; }
//...
}
public class HumanHairColour {
public string DisplayName { get; set; }
//...
}
现在我们必须手动为PersonViewModel
上的每个属性添加映射,除非我想将其命名为ClassificationNationalityDisplayName
或类似的东西。
是否可以在我们的Automapper
设置中添加某种规则,要求它检查Classification
类中是否有类似名称的属性,然后将其映射到字符串使用其DisplayName
1}}?
答案 0 :(得分:0)
您可以将viewmodel中的属性重命名为:
public class PersonViewModel {
public string NationalityDisplayName { get; set; }
public string GenderDisplayName { get; set; }
public string HairColourDisplayName { get; set; }
}
然后,Automapper将使用以下内容正确映射所有内容:
Mapper.CreateMap<Person, PersonViewModel>();