我正在设计域模型,但有些地方似乎不太对劲。
我从一个主要的聚合开始。它引用了其他聚合,这些其他聚合也引用了更多聚合。我可以从主聚合开始遍历空域模型。
我看到的问题是,我将在内存中保存聚合的所有实例。
这是一个好的设计吗?我可以用延迟加载解决内存问题,但我认为我有一个更深层次的问题。
我还有一个关于聚合引用的问题。我应该懒惰地加载对其他聚合的引用吗?如果是这样的话,我几乎永远不会使用他们的存储库。这样可以吗?
发布于 2012-07-25 02:58:38
在聚合根(AR)之间进行直接引用可能会导致延迟加载无法解决的问题。此外,它迫使所有连接的AR都在同一个数据库中,并使推理和实施不变量变得更加困难,而不变量是AR的首要目的。最好限制或消除AR之间的直接引用。学习聚合设计的一个很好的资源是Vaughn Vernon的series of articles。基本的想法是让你的ARs变得精简和专注,同时牢记它们的功能--执行业务约束并围绕根实体打造一个边界。如果AR需要来自另一个AR的数据来执行其工作,则该数据可以由应用服务通过存储库提供给它。此外,如果只需要引用来满足UI需求,那么可以考虑使用read-model pattern。
https://stackoverflow.com/questions/11631524
复制相似问题