如何在应用程序设计中组合两个域模型?
我有一个名为团队的域名模型,其中包括: - ID - 名称 - 说明
我有一个名为 TeamUser 的域名模型,其中包括: - 用户身份 - teamId - roleType
API使用者想要一个包含以下内容的视图: - id(团队的ID) - 名称 - roleType
因此,这是来自团队和 TeamUser 域模型的数据的组合,因为该视图包含roleType
(可能更晚)。
我将如何建模?这将发生在哪一层(服务,存储库,控制器)?因为我的数据库设计和实际的演示视图存在差异。
答案 0 :(得分:2)
我将如何对此进行建模?
您应该为专用视图创建新的DTO投影模型,以满足其需求。这意味着 - TeamDto
具有属性 - id
- name
- roleType
这会发生在哪一层(服务,存储库,控制器)?
您将数据库查询的结果(仅查询所需数据)投影到存储库中的DTO。如果你在后期(服务,控制器)这样做,这很可能意味着你从数据库中读取效率低下的数据(例如,加载整个团队和TeamUser,而不是将它们组合在一起)
答案 1 :(得分:0)
除了Jan Muncinsky所说的,您可以探索CQRS,您将使用两个单独的模型,一个用于命令,一个用于查询,这样您的域模型就不会受到不断的限制更改UI查询。