我有一个域名模型
Customer
- 汇总根 - 因为订单在没有客户的情况下不能存在Order
- 实体OrderStatus
- 价值对象在我的表单中,我需要一个包含所有OrderStatuses
的列表。
我是否应该从存储库中获取一个空的客户实体(AR),其中包含一个包含所有OrderStatuses列表的空订单实体?这很尴尬。
答案 0 :(得分:0)
答案 1 :(得分:0)
嗯,它总是取决于您的问题领域,但是由于缺乏进一步的信息,我想您可能需要稍微破坏一下模型。
即使没有客户也无法存在订单,但订单不会是客户AR下的子实体。您需要引入“边界上下文”的概念。
客户将是一个BC的AR,而Order将是其自己的BC的AR。
在这种情况下,您将使用CustomerId属性(而不是对象引用)引用Order中的Customer,因为它们属于不同的上下文,因此它们甚至可以存在于单独的微服务中,并且位于单独的数据库中。
您知道我要去的地方:拿空订单(或订单列表)的空客户只是为了到达订单状态列表,这是没有意义的。
即使Order和Customer确实属于同一个BC,OrderStatus还是Reference Data,并且最好用枚举类型表示(或者最好使用Enumeration Pattern)。
看看这个附加信息: