我有这样的域名
public class Person
{
public int id { get; set; }
public string name { get; set; }
public Gender gender { get; set; }
}
public class Gender
{
public int id { get; set; }
public string description { get; set; }
}
此人的性别属性是查找...这意味着用户选择性别作为下拉菜单的用户界面
public class EmployeeDTO
{
public int personid { get; set; }
public string name { get; set; }
public int genderid { get; set; }
}
那么如何设置我的AutoMapper ...将DTO转换为域,反之亦然?
答案 0 :(得分:1)
实际上,AutoMapper提供开箱即用的对象展平功能,因此这将自动为您完成。
Person person = new Person();
Mapper.CreateMap<Person, EmployeeDTO>()
.ForMember(dest => dest.personid, opt =>
opt.MapFrom(src => src.id)); // this line is only because I noticed different property names (id vs personid)
EmployeeDTO employeeDTO = Mapper.Map<EmployeeDTO>(person);
employeeDTO.genderid.ShouldEqual(person.gender.id);
如果在复杂域对象中使用约定OuterProperty.InnerProperty
,并且类型匹配正确,则AutoMapper会将其展平为目标对象中的OuterPropertyInnerProperty
。你可以在这里阅读所有相关内容:http://github.com/AutoMapper/AutoMapper/wiki/Flattening