设计包含对象列表的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属性好。

处理这个问题的好方法是什么?

设计包含对象列表的dto

你还可以创建另一个

的域模型
ProjectTask
    - ProjectId
    - ProjectName
    - TaskId
    - TaskName

这可以帮助一对多关系(也允许多对多)和绕过令人困惑的循环project->task-> project->task结构。从这里,你可以让你的API客户端按projectId分组所有的ProjectTasks,并以这种方式处理它。

话虽如此,我认为你原来的方法是好的,但这里有一个替代方法。

您之前的类非常简单,并且是执行此操作的标准方法。您可以创建一个Context类来保存项目和任务的列表。共三个类