如何避免DDD聚合关系的N+1问题?

问题描述 投票:1回答:1

我读过Vaughn Vernon的一篇文章,他在文中指出,聚合体之间只能通过标识相互引用。

假设我有一个聚合体A,它有一个对聚合体B的身份的引用。我想在我的用户界面中显示一个包含聚合体A的列表,其中有一些来自聚合体B的列。

这意味着我必须先查询集合A,然后再查询集合B,并使用集合A的引用。

这似乎是一个N+1的问题,我怎样才能在尊重 "通过身份引用 "规则的前提下解决这个问题呢?

aggregate domain-driven-design ddd-repositories
1个回答
1
投票

你不应该查询你的域对象,因为它们通常不适合查询。 域更关心的是 指挥 事务性 方面的事情,在那里你创建和写走数据。

另一方面 查询 报告 更关心的是读取数据。 为此,你可以开发一个轻量级的查询机制,尽可能的接近你所使用的数据层。 因此,你返回的是相当原始的数据或 读出模型 (DTOs)以及您需要的任何加入和数据聚合。

© www.soinside.com 2019 - 2024. All rights reserved.