命令内的复杂类型

时间:2012-05-02 09:22:56

标签: cqrs

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

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

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

AddFoodToCourse ChangeFoodQuantityInCourse等......

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

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

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

使用ReadModel =>创建一个命令并发送到bus => CommandHandler使用命令,使用domain object操作并使用repositories =>保存对象Domain objects举起活动并发布到bus => EventHandler使用事件并修改ReadModel对象

1 个答案:

答案 0 :(得分:2)

  

在处理程序中,我想只管理ID并获得所有相关信息   来自存储库的数据与否?

正确。命令处理程序是注入处理命令所需的存储库和其他依赖项的地方。如您所述,命令应引用使用ID而非实体本身的实体。这是因为命令要序列化并跨应用程序边界传递。您的工作流程也是正确的。看看here,就这个问题进行更深入的处理。