Я пытаюсь использовать AutoMapper, чтобы сэкономить время от моих DTO до объектов моего домена, но у меня возникли проблемы с настройкой карты, чтобы она работала, и я начинаю задаваться вопросом, может ли AutoMapper быть неправильный инструмент для работы.
Рассмотрим этот пример объектов домена (один объект и одно значение):
public class Person
{
public string Name { get; set; }
public StreetAddress Address { get; set; }
}
public class StreetAddress
{
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
}
Мой DTO (из объекта Linq-to-SQL) выходит примерно так:
public class PersonDTO
{
public string Name { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
}
Я хотел бы иметь возможность сделать это в моем репозитории:
return Mapper.Map<PersonDTO, Person>(result);
Я пробовал настраивать AutoMapper всякий раз, когда я могу изобразить, но я продолжаю получать общую конфигурацию карты отсутствующего типа или неподдерживаемое сопоставление, без каких-либо подробностей, чтобы сообщить мне, где я терпит неудачу.
Я пробовал несколько разных конфигураций, но вот несколько:
Mapper.CreateMap<PersonDTO, Person>()
.ForMember(dest => dest.Address, opt => opt.MapFrom(Mapper.Map<Person, Domain.StreetAddress>));
и
Mapper.CreateMap<Person, Domain.Person>()
.ForMember(dest => dest.Address.Address1, opt => opt.MapFrom(src => src.Address))
.ForMember(dest => dest.Address.City, opt => opt.MapFrom(src => src.City))
.ForMember(dest => dest.Address.State, opt => opt.MapFrom(src => src.State));
Я читал, что сглаживание объектов с помощью AutoMapper очень простое, но непрофессиональное их непросто... или даже возможно. Может ли кто-нибудь сказать мне, пытаюсь ли я сделать невозможное, а если не то, что я делаю неправильно?
Обратите внимание, что мои фактические объекты немного сложнее, поэтому я могу оставить информацию, которая является ключом к ошибке... если то, что я делаю, выглядит правильно, я могу предоставить дополнительную информацию или начать упрощать мои объекты для тестирования.