ビューに応じて、同じオブジェクトの複数の表現がある場合、どのように状況を解決しますか?
たとえば、あなたが本屋を経営しているとしましょう。書店内では、書籍の 2 つの主要な表現があります。
- リスト (検索結果、カテゴリ別の参照、作成者など): これは、NumberOfAuthors や NumberOfRwviews などの集計を含むコンパクトな表現です。各 Author と Review は、db に保存されたエンティティそのものです。
- DetailsView: ここでは、Book には AuthorsList プロパティがあるため、集計ではなく各 Author の実際の値があります。
ケース 2 はクリアです。DB からすべてを取得して表示します。しかし、ケース 1 を解決するにはどうすればよいですか。DB との間の接続とペイロードの数を減らしたい場合はどうすればよいでしょうか。したがって、DB からすべての実際の作成者とレビューを取得するのではなく、それぞれのカウントに 2 つの int だけを取得したい場合。
完全に正規化されたソリューションは 2 ですが、1 つは何らかの非正規化を必要とするか、ビジネス レイヤー内の BookDetails と BookCompact の 2 つの異なるエンティティを作成するようです。
重要: View DTO について話しているわけではありませんが、実際には Business Layer Book クラスに適合しない DB からデータを取得しています。