我試圖在一個寵物項目中應用CQRS:在我的例子中有Food
和Course
。命令內部的複雜類型
一個課程由許多不同的食物組成。
在我的設計,我有這些命令:
AddFoodToCourse
ChangeFoodQuantityInCourse
等等
如果我創建一個CourseCommandHandler我會得到一個ICourseRepository的依賴,以修改課程,但保留命令簡單,我會具有CourseId和FoodId屬性而不是Food。
在處理程序中,我想只管理Ids並從存儲庫中獲取所有相關數據?
如果我已經明白正確的我的應用程序必須遵循以下流程:
使用ReadModel
=>創建一個命令,發送到總線=>CommandHandler
消耗命令,以domain object
操作和保存的對象與repositories
=>Domain objects
引發事件併發布到總線=>EventHandler
消耗事件和修改ReadModel
對象
所以你告訴我,我必須注入我需要的每個存儲庫,或者我必須創建一個允許實體加載/保存任何類型的獨特存儲庫? –
存儲庫實現由您決定,但典型的CQRS存儲庫是一個事件存儲區,可以存儲通過guid鍵入的各種類型的事件。 – eulerfx