0

我正在尝试在宠物项目中应用 CQRS:在我的示例中,有Foodand Course

一个课程由许多不同的食物组成。

在我的设计中,我有这些命令:

AddFoodToCourse ChangeFoodQuantityInCourseETC...

如果我创建一个 CourseCommandHandler 我将获得一个 ICourseRepository 作为依赖项以修改课程但保持命令简单我将拥有 CourseId 和 FoodId 属性而不是 Food。

在处理程序中,我想只管理 ID 并从存储库中获取所有相关数据?

如果我理解正确,我的应用程序必须遵循以下工作流程:

使用ReadModel=> 创建命令并发送到总线 =>CommandHandler使用命令,操作domain object并保存对象repositories=>Domain objects引发事件并发布到总线 =>EventHandler使用事件并修改ReadModel对象

4

1 回答 1

2

在处理程序中,我想只管理 ID 并从存储库中获取所有相关数据?

正确的。命令处理程序是注入存储库和处理命令所需的其他依赖项的地方。正如您所说,命令应该使用 ID 而不是实体本身来引用实体。这是因为这些命令旨在被序列化并跨越应用程序边界传递。您的工作流程也是正确的。在这里查看有关该主题的更深入的处理。

于 2012-05-02T18:00:10.320 回答