Предположим, у меня есть следующие модели домена:Проектирование DTOS, которые содержат списки объектов
Project Task
- Id - Id
- Name - Name
- List<Task> - Project
Проекты имеют много задач и задач, есть один проект.
Теперь предположим, что я хочу создать объект передачи данных TodoListDTO. Моя первоначальная мысль состояла в том, чтобы просто сделать это:
TodoListDTO
- List<Project>
Кажется простым. Затем у меня есть доступ к списку задач в каждом проекте. Затем я читал в нескольких местах, что DTO должны быть как можно более плоскими. Но как бы я смоделировал это без использования сложных объектов?
Вместо TodoListDTO, я мог бы ProjectDTO, который выглядит примерно так:
ProjectDTO
- ProjectId
- Name
- List<TaskId>
- List<TaskName>
Но имеющие отдельные списки TaskIds и TaskNames кажется неудобным, и я не понимаю, как это лучше, чем просто имея Перечислите свойство в ProjectDTO.
Что такое хороший способ справиться с этим?
Как можно более плоский, не препятствует правильному моделированию проблемы. Если у проекта есть задачи, а задачи имеют один проект, то я не вижу ничего плохого в вашем первоначальном дизайне. – saarrrr
Я бы предпочел первый. Модульный. Потому что, если вы попытаетесь получить доступ к списку проектов в любой момент вашего приложения, вы в конечном итоге получите всю информацию о задачах, находящихся под ним. что неэффективно. – Reddy
Ну а * Данные * ** Транспорт ** * Объект * используется для передачи данных (f.i. импорт/экспорт данных в конкретный формат JSON/XML/..). Модели для EF также являются DTO (транспортные данные из/в базу данных). Каково намерение для DTO в вопросе? –