【发布时间】:2017-12-17 14:46:41
【问题描述】:
我正在尝试了解领域驱动设计的详细信息,我遇到了这个问题。 我发现了很多例子:
- 在域中定义存储库接口
- 在其他地方定义存储库实现
- 将存储库接口注入聚合根目录
另一方面,也有一些例子严格反对它,并从服务中执行所有与存储库相关的事情。
我找不到权威的答案和解释:这是否被认为是一种不好的做法?如果是,为什么?
【问题讨论】:
-
为了更好地回答你的问题,我先退后一步,想一想:为什么需要聚合内的存储库?
-
可能更适合Software Engineering。
-
@GoloRoden 例如有
Aggregate.Save()方法,里面会使用IRepository接口来保存。当然,另一种选择是拥有一个创建聚合实例的服务,调用它需要的任何业务操作方法,然后调用IRepository.Save(Aggregate aggregateInstance)。 (如果这回答了你的问题) -
我现在的回答与@VoiceOfUnreason 在他们的回答中已经写的类似。所以我不会添加另一个答案,但我会 +1 :-)
-
感谢您的评论!如果您有任何要添加到@VoiceOfUnreasons 答案的内容,请将其放在另一个答案中,我会投票赞成。