首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果聚合根类型相同,AggregateRoot可以引用另一个根吗?

如果聚合根类型相同,AggregateRoot可以引用另一个根吗?
EN

Stack Overflow用户
提问于 2020-06-24 04:09:30
回答 1查看 53关注 0票数 0

我正在建模一个库存应用程序,其中的项目被管理和分组到一个容器中,并分配一个唯一的编号,该编号将标识库存实例,并可以使用仓库中的RF轻松管理。在这些场景中,一个容器可以容纳另一个或更多的容器,这些容器将指向父容器以形成分层顺序或父子关系。所以我的问题是,如果我通过引用将容器建模为具有子容器集合的AggregateRoot,是否会违反DDD规则。由于事务边界的原因,当使用父RF ID扫描将子容器移动或添加到父容器中时,我可以调整库存移动或管理数量。下面是我的示例代码

代码语言:javascript
复制
public class Container:AggregateRoot
{
public virtual string Id{get;protected set;}
public virtual ScanId {get;protected set;}

public List<Container> ChildContainers {get;set;}

public void Detach(Container containerToAttach){

//Todo Adjustments
ChildContainers .Remove(containerToAttach);
}
public void Attach(Container containerToAttach){

//Todo Adjustments
ChildContainers .Add(containerToAttach);
}
}
EN

回答 1

Stack Overflow用户

发布于 2020-06-24 11:10:27

如果您真的在处理物理仓库,那么您将希望听到至少一个关于DDD在该域中如何工作的Greg Young's讨论。

简而言之:现实世界就是一本记录簿;您的数据库只是缓存了这些信息的副本。您不会拒绝向您描述真实世界的消息,而是接受新的信息(假设来源是可靠的),并在您的数据表明某些“不变”被违反时发布上报报告。

好的,回答你的问题

  1. 否,有关一个聚合根的表示形式(包括同一类型的不同聚合根的标识符)的规则没有任何冲突。

  1. Hierarchy可能很困难,特别是当您担心是否能够跟踪“唯一性”之类的东西时。事实可能证明,让子容器包含其父容器的标识符的副本,而不是让父容器包含子容器列表,可能会更有用。

  1. 通常,我们的聚合不是以领域中的名词为中心,而是以领域中名词的处理为中心。试图将所有信息堆积到一个“事物”集合中是一种常见的错误,因此要小心不要意外地重复这个错误。

  1. 当您试图确定一致性边界属于何处时,请记住,当您从现实世界获得的信息到达您的域模型时,它可能只有一纳秒的时间。试图将历史模型化为你可以控制的东西是另一种常见的错误。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62542950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档