0

アンケートのセッションであるエンティティ セットがあります。Question エンティティにもキー設定されている Responses のコレクションへのナビゲーション プロパティがあります (DB の外部キー関係を使用)。

単に行うだけで、応答のコレクションを簡単に呼び出すことができます

session.Responses

これは列挙されたリストを返しますが、ほとんどの場合はこれで問題ありません。

ただし、大規模なデータセットの場合、概念的な問題に直面しています。

アイテムに基づいてセッションの応答コレクションから特定の応答を選択したい場合、それがコレクションであることを考えると、それはシーク操作またはスキャン操作になりますか? Response と Question の間の FK 関係はまったく利用されますか?

そうでない場合は、Session Partial クラスで Keyed Dictionary を作成して、Response コレクションを取得し、それを Question Keys とペアにするのが賢明でしょうか? そうすれば、要求された質問ごとに正確な応答を得ることが直接的なシークになります。

4

1 に答える 1

0

オブジェクトに対する LINQ はEnumerators、コレクションを「スキャン」する を使用します。

編集:最善の策は、データベースで可能な限り多くの論理結合とフィルタリングを行うことです。EF クエリ式の結果をディクショナリに読み込むと、データベースでクエリが実行され、結果がメモリに格納されます。現時点では、IQueryable 式ではなく、IEnumerable オブジェクトのセットを扱っています。ディクショナリのその他の LINQ 式は、オブジェクトに対する LINQ です。

于 2013-09-06T18:08:58.843 に答える