假设我有以下域模型:
Project Task
- Id - Id
- Name - Name
- List<Task> - Project
项目有很多任务,任务有一个项目。
现在假设我要创建一个TodoListDTO数据传输对象。我原来的想法就是这样做:
TodoListDTO
- List<Project>
似乎很简单。然后我可以访问每个项目中的任务列表。然后我在几个地方读到DTO应该尽可能平坦。但是如何在不使用复杂对象的情况下对其进行建模?
我可以使用类似于:
的ProjectDTO代替TodoListDTOProjectDTO
- ProjectId
- Name
- List<TaskId>
- List<TaskName>
但是拥有单独的TaskIds和TaskNames列表似乎不方便,而且我不知道如何在ProjectDTO上拥有List属性。
处理此问题的好方法是什么?
答案 0 :(得分:4)
您可以做的另一件事是创建
的另一个域模型ProjectTask
- ProjectId
- ProjectName
- TaskId
- TaskName
这可以帮助实现一对多的关系(也允许多对多),并且可以帮助解决令人困惑的项目 - &gt;任务 - &gt;项目 - &gt;任务结构。从这里,你可以让你的API客户端组通过projectId获得所有ProjectTasks并以这种方式处理它。
话虽如此,我认为你原来的方式很好,但这里有另一种选择。
答案 1 :(得分:1)
您以前的课程很简单,也是标准的做法。您将创建一个Context类,该类将保留Projects和Tasks列表。共有三个班级。