1

在许多 ddd 示例中,我们有一个简单的示例:

Order(聚合根 [AR])和 OrderLine(聚合成员 [AM])

+

发票(聚合根 [AR])和 InvoiceLine(聚合成员 [AM])

在该示例中,我们根据订单开具发票,因此它是从一个 AR(发票)到另一个(订单)的直接引用,这显然是正确的。

但是,就我而言,事情要复杂得多:

我们为来自不同订单的许多 OrderLine 开具发票。

因此,在一张 Invoice 上,我们有: InvoiceLine #1 从 Order #1 引用 OrderLine #1,另一个 InvoiceLine #2 引用 OrderLine #2(从另一个 Order #2)

例如,没有从 Order #1 引用 OrderLine#2 的 InvoiceLine。

如何解决这种情况?

似乎我们必须在 InvoiceLine 中保留对 OrderLine 的引用,这是不正确的,afaik。但我没有其他想法:/

在此先感谢您的任何建议。

4

1 回答 1

0

您不应持有从一个 AR 到另一个 AR 的真实对象实例引用。任何实体引用都应该是暂时的。

您应该只存储标识符。

在您的情况下,您可以将 Order ID 和 OrderLine Number 存储在相关的 InvoiceLine 条目上。它甚至可能是一个值对象。

通过这种方式,当您从其存储库中获取 Invoice AR 时,您不会遇到任何对象检索问题。

于 2013-06-05T04:29:32.867 回答