Преобразовании объектов между доменной моделью и моделью представления на примере методов MapToDto и MapToEntity

  • Михаил
  • 8 мин. на прочтение
  • 173
  • 13 Jul 2024
  • 13 Jul 2024

Принцип использования методов MapToDto и MapToEntity заключается в преобразовании объектов между доменной моделью (модель сущности Entity) и моделью представления (DTO - Data Transfer Object).

1. MapToDto:

  • Этот метод принимает объект доменной модели и возвращает объект DTO.
  • Он используется для преобразования данных из доменной модели в формат, подходящий для передачи в клиентское приложение или использования в представлении.
  • Метод позволяет выбрать только те свойства, которые необходимы в DTO, и выполнить любые дополнительные преобразования данных.
  • Это помогает отделить представление данных от внутренней реализации доменной модели, делая код более гибким и легко масштабируемым.

Пример реализации MapToDto:

public static UserDto MapToDto(User user)
{
    return new UserDto
    {
        Id = user.Id,
        Name = user.FirstName + " " + user.LastName,
        Email = user.Email,
        // Другие свойства, которые необходимы в DTO
    };
}

2. MapToEntity:

  • Этот метод выполняет обратное преобразование, принимая объект DTO и возвращая объект доменной модели.
  • Он используется для преобразования данных, полученных от клиента или из представления, в формат, подходящий для сохранения в базе данных или использования в бизнес-логике.
  • Метод позволяет создать или обновить объект доменной модели на основе данных, полученных в DTO.
  • Он помогает поддерживать целостность и согласованность данных между представлением и доменной моделью.

Пример реализации MapToEntity:

public static User MapToEntity(UserDto userDto)
{
    return new User
    {
        Id = userDto.Id,
        FirstName = userDto.Name.Split(' ')[0],
        LastName = userDto.Name.Split(' ')[1],
        Email = userDto.Email,
        // Другие свойства, которые необходимы в доменной модели
    };
}

Использование этих методов в приложении позволяет:

1. Отделить представление данных (DTO) от доменной модели, что повышает гибкость и масштабируемость кода.
2. Обеспечить корректное преобразование данных между слоями приложения (представление, бизнес-логика, доступ к данным).
3. Обеспечить возможность дополнительной обработки данных во время преобразования, например, форматирование, валидация или вычисление производных свойств.
4. Поддерживать согласованность данных между DTO и доменной моделью.

Использование MapToDto и MapToEntity является распространенным подходом в архитектуре приложений, основанной на принципах разделения ответственности и инверсии управления (IoC).