我正在对现有应用程序的未开发模块使用类似DDD的方法;由于架构原因,它不是100%DDD,但我正在尝试使用一些DDD概念。我有一个界上下文(我认为这是适当的期限-我仍然在学习DDD)由两个实体:Conversation
和Message
。对话是根源,因为没有对话就不存在消息,并且系统中的所有消息都是对话的一部分。
我有一个ConversationRepository
类(尽管它实际上更像是一个网关,但我使用术语“存储库”)可以在数据库中找到会话。当找到会话时,它还会(通过工厂)为该会话创建消息列表(作为属性公开)。这似乎是正确的处理方式,因为似乎不需要完整的MessageRepository
类,因为只有在检索到对话时才存在该类。
但是,在保存消息时,由于它是Message的聚合根,这是ConversationRepository的责任吗?我的意思是,我是否应该在ConversationRepository上有一个名为AddMessage
Message 的方法,该方法将Message作为参数并将其保存到数据库中?还是应该有一个单独的存储库来查找/保存消息?逻辑上似乎是每个实体一个存储库,但是我也听说过“每个上下文一个存储库”。