0

假设我有以下领域模型:

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 属性更好。

有什么好的方法来处理这个?

4

2 回答 2

4

您可以做的另一件事是创建另一个域模型

ProjectTask
    - ProjectId
    - ProjectName
    - TaskId
    - TaskName

这可以帮助解决一对多的关系(也允许多对多)并避免令人困惑的循环项目->任务->项目->任务结构。从这里您可以让您的 API 客户端按 projectId 对所有 ProjectTask 进行分组并以这种方式处理。

话虽这么说,我认为您的原始方式很好,但这是另一种选择。

于 2016-08-26T23:18:46.733 回答
1

你以前的课程很简单,而且是标准的做法。您将创建一个 Context 类来保存项目和任务列表。一共三个班。

于 2016-08-26T22:39:25.003 回答