0

ペット プロジェクトに CQRS を適用しようとしています。私の例ではFoodとがありCourseます。

コースは、さまざまな食品の多くのアイテムで構成されています。

私の設計では、次のコマンドがあります。

AddFoodToCourse ChangeFoodQuantityInCourse等...

CourseCommandHandler を作成すると、コースを変更するために ICourseRepository を依存関係として取得しますが、コマンドをシンプルに保つために、Food の代わりに CourseId および FoodId プロパティを使用します。

ハンドラーでは、ID のみを管理し、リポジトリからすべての関連データを取得すると思いますか?

正しく理解している場合、アプリは次のワークフローに従う必要があります。

使用ReadModel=>コマンドを作成してバスに送信=>CommandHandlerコマンドを消費し、オブジェクトを操作しdomain objectて保存repositories=>Domain objectsイベントを発生させてバスに発行=>EventHandlerイベントを消費してReadModelオブジェクトを変更

4

1 に答える 1

2

ハンドラーでは、ID のみを管理し、リポジトリからすべての関連データを取得すると思いますか?

正しい。コマンド ハンドラーは、コマンドの処理に必要なリポジトリやその他の依存関係を挿入する場所です。あなたが述べたように、コマンドはエンティティ自体ではなくIDを使用してエンティティを参照する必要があります。これは、コマンドがシリアル化され、アプリケーションの境界を越えて渡されることを意図しているためです。あなたのワークフローも正しいです。この件に関するより詳細な取り扱いについては、こちらをご覧ください。

于 2012-05-02T18:00:10.320 に答える