0
我一直在浏览AutoMapper文档和相关问题,试图找到一个建议的解决方案,但一直没有找到它。Automapper多源到一个目的地
比方说,我有一个像源如下:
public class Person{
public string PersonId{get;set;}
public string FirstName {get;set;}
public string LastName{get;set;}
public List<Company> Companies {get;set;}
}
public class Company{
public string CompanyName {get;set;}
public string CompanyAddress {get;set;}
public List<UserRoles> UserRoles
}
public class UserRoles{
public string PersonId{get;set;}
public List<Roles> Roles {get;set;}
}
public class Roles{
public string RoleId{get;set;}
public string RoleDescription {get;set;}
}
我想上面的源对象到目标对象映射如下:
public class Person{
public string PersonId{get;set;}
public string FirstName {get;set;}
public string LastName{get;set;}
public List<CompanyViewModel> CompanyViewModel {get;set;}
}
public class CompanyViewModel{
public string CompanyName {get;set;}
public string CompanyAddress {get;set;}
public List<RolesViewModel> RolesViewModel {get;set;}
}
public class RolesViewModel{
public string RoleId{get;set;}
public string RoleDescription {get;set;}
}
我曾尝试下面的代码映射一起:
CreateMap<Person, PersonViewModel>();
CreateMap<Company, CompanyViewModel>();
CreateMap<UserRoles, IEnumerable<CompanyViewModel>>()
.ConvertUsing<CompanyRolesMapping>(); // Not sure
CreateMap<Roles, RolesViewModel>();
父级人员数据能够正确映射,但chil d级公司和角色级别的数据不是。
我不知道如何去关于第三部分(将该项目映射到集合中的项目)。
这样做最干净的方法是什么?
如果您希望它自动映射,则源和目标上的属性名称必须相同。否则,你将不得不使用'ForMember'扩展来映射子实体和实体集合。 – Sam
好的@Sam,谢谢。 –