質問
CQRSの基本的な教義の一つは、私はそれを理解するように、コマンドはすなわち、行動中心のこと、そしてビジネスにおける価値やULはなく、データ中心を持つべきであるということです。、CRUD。顧客の更新に焦点を当てたのではなく、我々はCustomerHasMovedのようなコマンドを持っています。あなたが特定のデータを修正するためにあるCRUD画面を持っている場合。例えば、我々はスペルミスされ、顧客の名前を変更する必要があります。これは本当にビジネスに多くの価値を持っていません。これは単なるUpdateCustomerコマンドの傘の下でなければなりません?
解決
実際には、顧客の名前を更新するための様々な理由があるかもしれません。あなたが言っていたとして、それはスペルミスされたり...あなたは結婚し、あなたの夫のに自分の名前を変更することができます。
あなたが唯一のUpdateCustomerコマンドを持っていた場合は、は、元の意図を失うだろうと、あなたはそれらのそれぞれに異なる動作を持ってすることはできません。名前がmisselledれた場合、それはあなたの顧客が結婚した場合、彼らは割引を提供することができますtthatので、あなたがマーケティングのデパートに通知する必要があるかもしれません一方で、データベースを更新するのと同じくらい簡単である可能性があります。
あなたのエンティティは、純粋にCRUDである場合には、それはあなたがプロパティを変更するに関連付けることができます意図はなく、それはUpdateEntityCommandを持ってOKですです。その後、何かに徐々に移行することができます基づいて、複数のタスク
他のヒント
私はちょうどそれがポップアップしてすぐにこの上でコメントを載せていきたいと思います。
いくつかのオブジェクトが実際にCRUDで、[OK]をthatsのことに注意することが重要です。私は本当に私は人々に製品を出荷し、データが宛名ラベルを印刷することだけを必要な場所の名前が自分のドメインに変更された理由を気にしないかもしれません。トリックは動作をデフォルトになった後、あなたはあなたが本当にその逆に対立するものとしての理由を気にしないことを確認されたら、CRUDインターフェイスに戻すにある。
グレッグ
CustomerHasMovedあなたは、顧客の場所を更新した後に発生されるイベントです。このイベントは、読み取り、データベース/キャッシュデータベースを更新します。 GUIからのコマンドがMoveCustomerまたはそのような何かでなければなりません。私はUpdateCustomerのようなコマンドで顧客名の更新を置くと思います。