【问题标题】:Should child entity classes have their own repositories?子实体类应该有自己的存储库吗?
【发布时间】:2011-09-23 11:50:31
【问题描述】:

我有几个类继承自 Admin 类:ManagerTranslator 等。

Admin 是一个聚合,所以应该有自己的Repository。但是,某些查找 Managers 或 Translators 的方法可能特定于这些类。其他可能对所有管理员都是通用的。

这里的最佳做法是什么?我应该:

  • 将所有查找管理员的方法放在一个存储库中?
  • 或使用存储库层次结构模拟域模型类的层次结构,然后使用ManagerRepositoryTranslatorRepository 扩展AdminRepository

【问题讨论】:

    标签: orm domain-driven-design ddd-repositories domain-object


    【解决方案1】:

    正如我所见 - 这并不重要。

    我会坚持使用AdminRepository,除非它膨胀并要求分解。

    【讨论】:

      【解决方案2】:

      严格来说,只有聚合根需要自己的存储库。

      如果您需要在不访问另一个聚合根的情况下管理特定实体,则可以将该实体视为(但不一定)一个聚合根本身。

      所以我想说:选择您的业务/领域观点,然后得出您的技术结论。

      【讨论】:

      • 感谢您的回答,但我不确定您是否正确理解了这个问题:Admin 是聚合根,其子类 Manager 和 Translator 也是(因此?)聚合。问题不在于我是否应该将它们视为聚合,而是它们是否应该共享一个 Repository 或者它们都应该拥有一个 Repository。
      • 感谢您的澄清。我对此的想法是:如果您想在 Manager 和 Translator 上执行完全相同的操作,那么如果它们基本上是平等的公民,那么拥有一个单一的存储库是有意义的。如果他们需要不同的处理或不同的操作,那么我认为每个单独的存储库是最好的。只是我的 2 美分...
      猜你喜欢
      • 1970-01-01
      • 2018-06-02
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      • 2011-05-24
      • 1970-01-01
      • 2016-04-28
      相关资源
      最近更新 更多