我有一个名为reward的微服务。当客户在不同的微服务中进行特定的活动(花费了特定的金额)时,该服务将发布一个事件,比如SpentRewardingMoney。
在奖励服务中,我的聚合根是Customer。
public class Customer: Entity, IAggregateRoot
{
// some properties
public List<CustomerReward> UserRewards { get; private set; } // rewards already given
}现在在SpentRewardingMoneyConsumer中,我必须给那个客户奖励。
问题是,为了简化,有一些配置,假设有一个表RewardRule(奖励金额,是奖励活动等)来支付奖励。根据DDD规则,我必须通过聚合根拉取所有内容,但此配置不是聚合根的一部分。
我该如何从数据库中取出这个表呢?
发布于 2020-09-04 05:55:19
奖励可以从数据库或您使用的任何其他持久性加载。它将通过存储库加载。你问题的另一部分是:它应该存在于你的模型中的什么位置?
这取决于您的普遍语言(UL)。根据我的理解,听起来“奖励金额”和“奖励有效”都是客户奖励对象的值。(这是基于我对您的需求和UL的猜测而得出的有根据的猜测)。
奖励也可以是它自己的合计(也取决于UL)。在这种情况下,在同一上下文中的聚合之间的通信是直接的。在这种情况下,您可以使用服务来简化交互。
https://stackoverflow.com/questions/63677677
复制相似问题