设计包含对象列表的dto
本文关键字:dto 列表 对象 包含 | 更新日期: 2023-09-27 18:04:09
假设我有以下领域模型:
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上有一个List属性好。
处理这个问题的好方法是什么?
你还可以创建另一个
的域模型ProjectTask
- ProjectId
- ProjectName
- TaskId
- TaskName
这可以帮助一对多关系(也允许多对多)和绕过令人困惑的循环project->task-> project->task结构。从这里,你可以让你的API客户端按projectId分组所有的ProjectTasks,并以这种方式处理它。
话虽如此,我认为你原来的方法是好的,但这里有一个替代方法。
您之前的类非常简单,并且是执行此操作的标准方法。您可以创建一个Context类来保存项目和任务的列表。共三个类