gpt4 book ai didi

domain-driven-design - 域驱动设计中每个根聚合实体的一个存储库

转载 作者:行者123 更新时间:2023-12-04 07:24:51 24 4
gpt4 key购买 nike

如果您遵循存储库模式,则它们会说...为每个根聚合实体创建一个存储库。

那意味着当我有这个模型时:

客户有订单
订单有产品
产品有供应商

等等...

这意味着我有4个存储库,这些存储库已放入一个存储库中。客户是根实体。

我在这里误解了吗?

最佳答案

正确的是,每个聚合应该有一个存储库。但是,可以变化的是您域中的聚合集合。客户/订单/产品/供应商模型可以通过多种方式分解为汇总。分解为聚集体取决于多种因素,并且取决于手边的域。

聚合应该是一致性边界,这意味着它定义了在与那些实体相关联的行为的上下文中哪些实体集应该是一致的。鉴于此约束,应该消除聚合之间的对象引用,并用标识引用代替。

在您的模型中,客户,订单,产品和供应商可能是不同的集合,因此需要单独的存储库。即使客户是聚合根(客户聚合的一部分)并且订单取决于客户,但这并不意味着客户存储库应包含订单存储库。订单存储库应该完全独立,因为订单是订单集合的根。

查看Effective Aggregate Design by Vaughn Vernon,以深入了解如何设计聚合。

关于domain-driven-design - 域驱动设计中每个根聚合实体的一个存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14716989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com