Я не очень хорошо знаком с automapper, но наш архитектор программного обеспечения предложил мне его для этого проекта.
Концепция представляет собой полную инкапсуляцию волатильности. Вот плохо сделанная схема
API/уровень представления | Объекты с суффиксами запроса и ответа. (т.е. ApplicationCreateRequest)
Бизнес-уровень | Дом объектов передачи домена, суффикс DTO. (т.е. ApplicationCreateDTO)
Уровень базы данных | Домашняя страница объектов доступа к ресурсам и сущностей с суффиксами RAO и Entity (т. е. ApplicationEntity, ApplicationCreateRAO)
Мне нужно преобразовать ApplicationCreateRequests в ApplicationCreateDTO, а также преобразовать вложенные объекты Requests в DTO.
Например:
public class ApplicationCreateRequest
{
public string FirstName { get; set; }
public string LastName { get; set; }
public ContactCreateRequest Contact { get; set; }
public DemographicCreateRequest Demographic { get; set; }
public EducationCreateRequest Education { get; set; }
public WorkCreateRequest Work { get; set; }
}
становится
public class ApplicationCreateDTO
{
public string FirstName { get; set; }
public string LastName { get; set; }
public ContactCreateDTO Contact { get; set; }
public DemographicCreateDTO Demographic { get; set; }
public EducationCreateDTO Education { get; set; }
public WorkCreateDTO Work { get; set; }
}
DTO и запросы имеют по большей части одни и те же свойства.
Мне приходилось работать только с очень простыми сопоставлениями, такими как:
CreateMap<ObjectOne, ObjectTwo>();