1

我们使用 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

4

1 回答 1

0

You could rename the properties in your viewmodel to:

public class PersonViewModel {
  public string NationalityDisplayName { get; set; }
  public string GenderDisplayName { get; set; }
  public string HairColourDisplayName { get; set; }   
}

Then Automapper will map everything correctly with:

Mapper.CreateMap<Person, PersonViewModel>();
于 2012-07-03T06:46:47.307 回答