私はCQRSを読んでコンセプトが好きですが、「通常の」開発とは少し違うと思います. 実装方法の良い例が見つからないという「問題」を見つけました。そして、それが2つの異なる集約ルートから「同じデータ」にアクセスする方法です。私が理解した方法は、aggregateroot とその値を書き込みデータベースにシリアル化し、2 つの異なる aggregateroot から「同じデータ」を取得できないことです。
これが私の言いたいことの例です。
したがって、Web ショップで商品を販売する場合、その商品の ItemsInStock を減らします。そのため、Web ページで、在庫がいくつあるか、または顧客に配送する前に注文する必要があるかどうかを示すことができます。
したがって、RefillStockCommand(int number) のようなコマンドを送信できるため、製品は aggregateroot になります。私が持つもう1つのaggregaterootは、注文を顧客などに送信するSendCommand()を持つOrderです。よくわかります。
SendCommand() を実行すると、注文したすべての製品の ItemsInStock-state を減らしたいと思います。また、一部が 5 を下回った場合は、小売業者にこの製品をさらに注文したいと考えています。では、Orderaggregateroot に製品の aggregateroots をロードしても問題ありませんか? それができれば、製品のデータを取得し、SendCommand() で製品の ItemsInStock-state も変更しますが、別の aggregateroot 内の aggregateroot にアクセスしても問題ないように聞こえますが、そうでない場合はどうすれば変更できますか? 1 つのコマンドで 2 つの aggregatesroots を実行し、ビジネス検証のために別の aggregaterroot で 1 つの aggregateroots データを使用しますか?
敬具 マグナス・グラッド