从嵌套类到单个(展平)的自动映射映射

Sha*_*ean 8 asp.net-mvc automapper

这是我的来源:

public class User
{
    public int UserId { get; set; }

    public Address Address { get; set; }
}

public class Address
{
    public string Address { get; set; }
    public string State {get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是我的目的地:

public class UserVM
{
    public int UserId { get; set; }

    public string Address { get; set; }
    public string State { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我该如何进行映射?当他们说扁平化是自动的时,普通的创建地图不起作用.

Jef*_*ata 15

如果将目标类属性名称更改为AddressStreetAddressState,则AutoMapper将按照惯例将它们Address.StreetAddress.State源匹配.

public class UserVM
{
    public int UserId { get; set; }

    public string AddressStreet { get; set; } // User.Address.Street
    public string AddressState { get; set; }  // User.Address.State
}
Run Code Online (Sandbox Code Playgroud)

或者,您保留目标属性名称并使用自定义成员映射:

Mapper.CreateMap<User, UserVM>()
    .ForMember(dest => dest.Street, opt => opt.MapFrom(src => src.Address.Street))
    .ForMember(dest => dest.State, opt => opt.MapFrom(src => src.Address.State));
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅AutoMapper文档以了解投影和展.