我必须命名空间VM和GM。 两者都有类Employee。 员工包含部门。 我想将VM.Employee映射到GM.Employee。 Mapper不允许我映射部门。
class VM.Employee
{
int Id {get;set;}
int Name {get;set;}
VM.Department dept{get;set;}
}
class VM.Department
{
int Id {get;set;}
int Name {get;set;}
}
class GM.Employee
{
int Id {get;set;}
int Name {get;set;}
GM.Department dept{get;set;}
}
class GM.Department
{
int Id {get;set;}
int Name {get;set;}
}
答案 0 :(得分:1)
实际上,并不困难。您可以逐字段手动映射,类似于以下内容:
Mapper.CreateMap<VM.Employee, GM.Employee>()
.ForMember(vm => vm.Department,
mapping => mapping.MapFrom(gm => gm.Department))
Mapper.CreateMap<VM.Department, GM.Department>()
.ForMember(vm => vm.SomeFieldOfVmDepartment,
mapping => mapping.MapFrom(gm => gm.SomeFieldOfGmDepartment))
.ForMember(vm => vm.AnotherField,
mapping => mapping.MapFrom(gm => gm.AnotherField))
Automapper是基于约定的,当您映射两个类时,它将自动匹配命名相同的字段。但是,当您要映射的类具有不同的字段(名称或字段数不同)时,Automapper可能无法知道您要映射到哪个字段,因此您必须明确告知它。
您当然应该阅读AutoMapper文档以获取更多信息: Automapper Documentation