Val*_*ann 4 domain-driven-design cqrs event-store
我对CQRS和DDD比较陌生,我想知道在域模型中实现投票机制的最佳方法是什么.
在产品上,用户可以upvote/downvote.关于投票有一些域规则,你只能投票一次,无论是向下还是向上投票.
投票和产品都是聚合根.这是最好的方法吗?建议保持聚合较小.将投票添加到产品聚合根将超时使其变得臃肿.
我正在努力解决的问题是当投票是聚合根时删除投票.您需要知道需要删除哪个投票聚合.在命令处理程序中,无法使用productId和userId从存储库中检索投票.aggregateId作为单个Guid存储在数据库中.
该命令将包含这些字段
我找到的一些可能的解决方案:
什么是最好的方法?
利用我对您的域名的有限理解,我可以得出结论,有两个有界的上下文Catalog和Reviews.在这种情况下,你可以有一个Product在总体上Catalog BC和一个Product在聚集Reviews BC.
在Product从总量Reviews BC将包含所有的列表Vote特定产品的实体.一个Vote实体将包含以执行所需的所有信息vote only once业务不变(如IP地址,用户ID等).两种产品聚合类型(来自两个BC)将共享相同的ID - 如果需要,可以保持它们的同步(例如,当从产品目录中删除产品时,它在评论BC中被标记为不可投票).