Карта Automapper от вложенного класса до одного (сглаживать) - PullRequest
8 голосов
/ 09 ноября 2011

Это мой источник:

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; }
}

Это мой пункт назначения:

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

    public string Address { get; set; }
    public string State { get; set; }
}

Как мне сделать сопоставление?Обычная карта создания не работает, когда говорят, что выравнивание выполняется автоматически.

1 Ответ

15 голосов
/ 09 ноября 2011

Если вы измените имена свойств вашего класса назначения на AddressStreet и AddressState, AutoMapper, как правило, сопоставит их с Address.Street и Address.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
}

В качестве альтернативывы оставляете имена свойств назначения как есть и используете пользовательские сопоставления элементов:

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));

См. документацию AutoMapper для Проекция и Уплощение для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...