Я пытался использовать AutoMapper для сохранения некоторого времени, идя от моего DTOs до моих объектов области, но я испытываю затруднения при конфигурировании карты так, чтобы это работало, и я начинаю задаваться вопросом, мог ли 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-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 легко, но невыравнивание их не легко... или даже возможно. Кто-либо может сказать мне, пытаюсь ли я сделать невозможное, и если не, что я делаю неправильно?
Обратите внимание, что мои фактические объекты немного более сложны, таким образом, возможно, что я не учитываю информацию, которая является ключом к ошибке... если, что я делаю правильно взгляды, которые я могу обеспечить большему количеству информации или начать упрощать свои объекты для тестирования.
используйте https://github.com/omuleanu/ValueInjecter , он выполняет выравнивание и выравнивание и все остальное вам нужно, есть пример приложения asp.net mvc в загрузке , где демонстрируются все функции (также модульные тесты)