StackOverflow のドメイン モデルを実装する必要があるとしましょう。
ORM を行っている場合、「最後のコメント」やその他の「最後の」ものを取得するためのプロパティを定義 (およびマップ) するにはどうすればよいですか? これはドメインモデルに反映されるべきだと私には思えます。
「すべてのコメント」が必要な場合もありますが...
StackOverflow のドメイン モデルを実装する必要があるとしましょう。
ORM を行っている場合、「最後のコメント」やその他の「最後の」ものを取得するためのプロパティを定義 (およびマップ) するにはどうすればよいですか? これはドメインモデルに反映されるべきだと私には思えます。
「すべてのコメント」が必要な場合もありますが...
私は ORM ツールの影響を受けているかもしれませんが、これはドメイン プロパティではなくクエリと見なしています。ドメインには関連付けが含まれており、リポジトリには、説明しているようなクエリがカプセル化されています。
特定のユーザーによる最後のコメントについて、リポジトリにクエリを実行します。何かのようなもの
IList<Comment> recentComments = repository.GetRecentComments(user,20);
モデルでこれを行うこともできますが、予想されるコメントの数によっては避けたいと思います。モデルは、それ自体を設定する方法を知っているべきではありません。それはリポジトリの仕事です。ただし、NHibernate のようなものを使用している場合はそこにあります。
public class User{
public IList<Comment> Comments { get;set;}
public IList<Comment> GetRecentComments()
{
// Logic
}
}
その実装では、最後の 20 個のコメントを取得するために、常にすべてのコメントを読み込むことになります。50 個のコメントしかない場合は大したことではありませんが、5,000 個のコメントがある場合は、かなりのオーバーヘッドが発生します。