エンティティのクエリを実行し、クエリ データに多くのインクルードを追加すると、非正規化されます。
多くの行には、いくつかの列だけが異なるデータが含まれていますが、他の列には同じデータが含まれています。
ORM を使い始める前は、複数のクエリを作成し、複雑なオブジェクトを手作業で組み立てた複数の結果セットを受け取ることを好みました。最適なアプローチは、スキーマ、返されるレコードの数、エンティティの複雑さによって異なります。
EF が複雑なエンティティをインスタンス化する 2 番目の方法をサポートしているかどうか、およびこのモードを有効にする方法を知りたいです。
アップデート
より明確にするために、少し誇張します。
A
100 の単純なプロパティ (文字列、整数、日付など) で構成されるエンティティがあるとします。これらのプロパティに加えて、エンティティにはエンティティの非常に大きなコレクションが含まれていますB
。
クエリを考えてみましょう:
context.ASet.Include("CollectionOfB");
コレクション サーバーに含まれるアイテムごとに、B は A の単純なプロパティの多くの複製を返します。
ORM を使用せずにクエリを作成しますが、ルート オブジェクトの ID のみを要求します。次に、ルート オブジェクトを照会し、その後、ルート オブジェクト ID を参照する依存関係を照会します。
次に、辞書とハッシュ セットを使用して MARS を処理し、エンティティを組み立てます。