私はペットプロジェクトでCQRSを適用しようとしています。私の例では、Food
とCourse
です。複雑なタイプのコマンド
コースはさまざまな食べ物で構成されています。私の設計では
私はそれらのコマンドを持っている:
AddFoodToCourse
ChangeFoodQuantityInCourse
等...
私はCourseCommandHandlerを作成した場合、私はコースを変更するために、依存関係としてICourseRepositoryを取得しますが、私'LL簡単なコマンドを維持食品の代わりにCourseIdとFoodIdプロパティを持っている
ハンドラでは、Idsだけを管理し、関連するすべてのデータをリポジトリから取得するかどうかを確認する必要がありますか?
私が理解している場合は正しく私のアプリは、このワークフローに従う必要があります。
使用をReadModel
=>domain object
で動作し、repositories
=>Domain objects
レイズのイベントでオブジェクトを保存し、コマンドを作成し、>CommandHandler
コマンドを消費=バスに送りますバスに公開=>EventHandler
イベントを消費し、私はIDのみを管理し、リポジトリからすべての関連 データを取得したりしないように仮定ハンドラではReadModel
オブジェクト
私は、必要なリポジトリを注入する必要があると言いますが、代わりにエンティティのロード/保存を許可する一意のリポジトリを作成する必要があります。 –
典型的なCQRSリポジトリは、GUIDによってキーされた様々な型のイベントを格納できるイベントストアですが、リポジトリの実装はあなた次第です。 – eulerfx