私は最初の DDD プロジェクトに取り組んでおり、エンティティ、データ アクセス オブジェクト、およびそれらの関係の基本的な役割を理解していると思います。各検証ルールをそれに関連付けられたエンティティと共に格納する基本的な検証実装があります。これは、現在のエンティティのみに適用されるルールには問題なく機能しますが、他のデータが必要な場合には機能しなくなります。たとえば、ユーザー名が一意でなければならないという制限がある場合、現在の名前を持つ既存のユーザーが存在する場合に IsValid() 呼び出しが false を返すようにします。
ただし、この検証ルールをエンティティ自体に保持するためのクリーンな方法は見つかりません。エンティティに IsNameUnique 関数を使用したいのですが、これを行うためのほとんどのソリューションでは、ユーザー データ アクセス オブジェクトを挿入する必要があります。このロジックは外部サービスに含める必要がありますか? もしそうなら、どうすればエンティティ自体のロジックを維持できますか? それとも、これはユーザーエンティティの外にあるべきものですか?
ありがとう!