我有一个实体和模型定义如下:
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Location Location { get; set; }
public string Gender { get; set; }
public string Skills { get; set; }
public bool isPrivate { get; set; }
}
public class Location
{
public int Id { get; set; }
public string City { get; set; }
public string Country { get; set; }
}
public class UserModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Location Location { get; set; }
public bool isPrivate { get; set; }
}
然后,我设置了一个映射配置文件:
public MappingProfile()
{
CreateMap<User, UserModel>()
.ReverseMap();
}
关键是这在某种程度上有效,但Location
复杂类型未正确映射。通过在LocationCity
课程中加入LocationCountry
和UserModel
,我可以随时将其扁平化,但这不是我想做的事情。我希望Location
在返回的结果中显示为嵌套属性,因为它是最初定义的。如何在AutoMapper中实现这一目标?
答案 0 :(得分:1)
您还需要在Location to Location之间添加映射。是的,来源和目的地是一致的。
因此,您的映射配置文件应如下所示:
TextUtils.isEmpty(variable_name)
答案 1 :(得分:0)
您可以像这样定义配置:
CreateMap<User, UserModel>()
.ForMember(um => um.Location , opt => opt.MapFrom(u => u.Location))
.ReverseMap();
ReverseMap
只能创建一个简单的映射。对于任何复杂类型,您需要手动配置它,因为AutoMaper并不确切知道如何实例化Location
属性,它将返回null
引用。