この質問は言語に依存しませんが、私は C# 派なので、POCO という用語を使用して、通常はゲッター フィールドとセッター フィールドを使用して、データ ストレージのみを実行するオブジェクトを意味します。
ドメイン モデルを作り直して超強力な POCO にしましたが、プロパティ値がドメイン内で意味をなすようにする方法に関していくつかの懸念が残っています。
たとえば、サービスの EndDate は、サービスが下にある契約の EndDate を超えてはなりません。ただし、チェックを Service.EndDate セッターに入れるのは SOLID 違反のように思えます。実行する必要がある検証の数が増えると、私の POCO クラスが雑然とすることは言うまでもありません。
私にはいくつかの解決策があります(回答に投稿します)が、それらには欠点があり、このジレンマを解決するためのお気に入りのアプローチは何ですか?