将两个域对象组合到视图中

时间:2017-11-18 19:51:34

标签: design-patterns database-design architecture domain-driven-design

如何在应用程序设计中组合两个域模型?

我有一个名为团队的域名模型,其中包括:   - ID   - 名称    - 说明

我有一个名为 TeamUser 的域名模型,其中包括:   - 用户身份    - teamId    - roleType

API使用者想要一个包含以下内容的视图:    - id(团队的ID)   - 名称    - roleType

因此,这是来自团队 TeamUser 域模型的数据的组合,因为该视图包含roleType(可能更晚)。

我将如何建模?这将发生在哪一层(服务,存储库,控制器)?因为我的数据库设计和实际的演示视图存在差异。

2 个答案:

答案 0 :(得分:2)

  

我将如何对此进行建模?

您应该为专用视图创建新的DTO投影模型,以满足其需求。这意味着 - TeamDto具有属性 - id - name - roleType

  

这会发生在哪一层(服务,存储库,控制器)?

您将数据库查询的结果(仅查询所需数据)投影到存储库中的DTO。如果你在后期(服务,控制器)这样做,这很可能意味着你从数据库中读取效率低下的数据(例如,加载整个团队和TeamUser,而不是将它们组合在一起)

答案 1 :(得分:0)

除了Jan Muncinsky所说的,您可以探索CQRS,您将使用两个单独的模型,一个用于命令,一个用于查询,这样您的域模型就不会受到不断的限制更改UI查询。