当模型与诸如配置表之类的聚合根不相关时,我将模型放在哪里

问题描述

我有一个名为reward的微服务。当客户在其他微服务中进行某项活动(花费了一定金额)时,该服务会发布一个事件,假设SpentRewardingMoney

在奖励服务中,我的总根为Customer

public class Customer: Entity,IAggregateRoot
{
   // some properties

   public List<CustomerReward> UserRewards { get; private set; } // rewards already given
}

现在在SpentRewardingMoneyConsumer中,我必须奖励该客户。

问题是,为了简化起见,假设有一个RewardRule(奖励金额,奖励活跃等)来分发奖励。根据DDD规则,我必须将所有内容都拉到聚合根目录,但是此配置不是聚合根目录的一部分。

我应该如何从数据库提取此表?

解决方法

可以从数据库或您使用的任何其他持久性中加载奖励。它将通过存储库加载。 问题的另一部分是:模型中的什么位置?

这取决于您的通用语言(UL)。 据我了解,这听起来像“奖励金额”和“激活奖励”都是Customer Reward对象的所有值。 (这是根据我对您的要求和UL的猜测得出的有根据的猜测。)

奖励也可以是它自己的汇总(也取决于UL)。在这种情况下,在相同上下文中聚合之间的通信是直接的。在这种情况下,您可以使用服务来简化交互。