删除孤立的共享ValueObjects



我还在努力理解DDD。假设我有一个不可变的v PresentationSlide。因为它是不可变的,所以它可以很容易地被不同的实体共享和使用。但如果我把它映射到数据库会发生什么呢。在EntityFramework中,我可以将PresentationSlide建模为ComplexType,这意味着共享PresentationSlide的属性被映射到使用它的表。这很好,但是幻灯片可能相当大,因此我浪费了空间,如果它多次使用/reference。

作为一种替代方法,我可以将PresentationSlide映射到一个单独的表并引用它。因为它是不可变的,所以这也应该有效。但是现在,如果我修改Presentation,我必须复制旧PresentationSlide的内容并创建一个新实例。如果有很多的变化,我将很快有很多孤儿PresentationSlides在我的数据库。

这不是一个问题吗?有解决办法吗?我应该实现一个自定义的定期"清理孤立的演示幻灯片"任务吗?

首先,您应该考虑域模型中PresentationSlide的所有权和生命周期。在进行性能或存储优化时,请始终确保遵循模型语义。

  • 我首先在其实体内复制每个PresentationSlide。这是很自然的做法,因为这也是你在你的领域模型中所做的。

  • 将指标放在适当的位置,使您能够做出有关存储优化的明智决策。例如,使用复制方法,并在生产一段时间后计算由于重复而浪费的空间。

  • 只有当你真的有问题时,才进行存储优化。否则你就会成为过早优化的受害者。

如果你真的需要做一个优化,我认为你提到的方法是合理的。创建一个单独的表,并定期清理不再被引用的PresentationSlide

相关内容

  • 没有找到相关文章

最新更新