繁体   English   中英

设计包含对象列表的DTO

[英]Designing DTOs that contain lists of objects

假设我有以下领域模型:

Project                Task
    - Id                   - Id
    - Name                 - Name
    - List<Task>           - Project

项目有许多任务,而任务有一个项目。

现在假设我想创建一个TodoListDTO数据传输对象。 我最初的想法是这样做:

TodoListDTO
    - List<Project>

看起来很简单。 然后,我可以访问每个项目中的任务列表。 然后我在几个地方读到,DTO应该尽可能平整。 但是,在不使用复杂对象的情况下如何建模呢?

代替TodoListDTO,我可以拥有一个类似于以下内容的ProjectDTO:

ProjectDTO
    - ProjectId
    - Name
    - List<TaskId>
    - List<TaskName>

但是,单独列出TaskId和TaskName似乎很不方便,而且我不认为这比在ProjectDTO上具有List属性更好。

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

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

ProjectTask
    - ProjectId
    - ProjectName
    - TaskId
    - TaskName

这可能有助于一对多关系(也允许多对多),并避免使混乱的外接项目->任务->项目->任务结构。 在这里,您可以让您的API客户端组通过projectId拥有所有ProjectTasks,并以此方式进行处理。

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

您以前的课程非常简单,并且是实现此操作的标准方法。 您将创建一个Context类,该类将保留一个Projects和Tasks列表。 共三节课。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM