DDD の値オブジェクトを不変にする理由がわかりません。また、これを簡単に行う方法もわかりません。(問題があれば、C# と Entity Framework に焦点を当てています。)
たとえば、従来の Address 値オブジェクトを考えてみましょう。"123 Main Street " を "123 Main Street " に変更する必要がある場合、myCustomer.Address.AddressLine1 = "123 Main Street" と言う代わりに、まったく新しいオブジェクトを作成する必要があるのはなぜですか? (Entity Frameworkが構造体をサポートしていたとしても、これはまだ問題ですよね?)
値オブジェクトにはアイデンティティがなく、ドメイン オブジェクトの一部であるという考えは理解していますが (私はそう思います)、誰かが不変性が良いことである理由を説明できますか?
編集:ここでの私の最後の質問は、「値オブジェクトに適用される不変性が良いことである理由を誰かが説明できますか?」です。混乱させて申し訳ありません!
EDIT:明確にするために、私はCLR値型(対参照型)について尋ねていません。値オブジェクトのより高いレベルの DDD の概念について質問しています。
たとえば、Entity Framework の不変値型を実装するためのハック的な方法を次に示します: http://rogeralsing.com/2009/05/21/entity-framework-4-immutable-value-objects。基本的に、彼はすべてのセッターを非公開にするだけです。なぜこれを行うのに苦労するのですか?