問題タブ [eager-loading]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linq-to-entities - インクルードを使用した EF4/Linq Eager Loading がすべての結果の入力に失敗する
.Net 4.0 WCF サービスの一部として EF4 を試しています。このサービスの目的は、ドキュメント データをエンティティ オブジェクトの配列として ASP.Net アプリに返すことです。アプリはまだ .Net 2.0 です。ソリューションの性質上、コンテキスト レベルで LazyLoading を無効にしました。私はこれから始めました:
すべて正常に動作し、正しい数のオブジェクトが表示されます。ただし、Include をクエリに追加して、ナビゲーションが定義されている関連テーブルからフィールドを取得できるようにすると、最初のレコードのみが呼び出し元のアプリケーションに完全に入力されて返されます。
配列は正しいサイズですが、最初の要素以降のすべての要素は空白のデフォルトのプレースホルダーです。インクルードの使用が LazyLoading に戻ったようなもので、それを行に入れることができないようです。他の誰かがこの問題を抱えていましたか?
.net - サブクラス化されたエンティティの EF4 Eager Loading が機能しない
EF4 モデルに、具象サブクラス MultipleChoiceItem を持つ抽象 Content エンティティがあります。MultipleChoiceItem の場合、Options と呼ばれる MultipleChoiceItem エンティティの Navigation プロパティによってアクセスされる関連テーブルがあります。MultipleChoiceItem を取得している場合は、常に Options が必要になるため、Options の結果をeager-loadしたいと思います。しかし、私はこれを機能させることができないようです。これが私が基本的にやったことです:
MultipleChoiceItem はサブクラスであるため、デフォルトで作成されたメタデータを取得しませんでした。そこで、次のようなメタデータ クラスを作成しました。
/li>次に、ContentService に次のような新しいクエリを作成しました。
/li>
単体テストでは、次のように呼び出しています。
CompletedHandler に入ると、次のコードでは Options プロパティが読み込まれていないように見えます。実際には、Options.Count == 4 である必要があるのに 0 になっています (基になるデータ ストアをチェックして確認)。
誰が私が間違っているのか教えてもらえますか? 投稿されたモデルをフォローしようとしましたが、明らかに何かが欠けています...
ありがとう!
.net - Entity Framework - 関連エンティティの積極的な読み込み
私は MVC で Entity Framework 4 を使用しており、コントローラー メソッドが戻る前にビューで使用したい参照エンティティが読み込まれていることを確認する必要があります。
ObjectContext インスタンスは破棄されており、接続を必要とする操作には使用できなくなりました。
コンテキストから直接選択する場合は、Include(string)
メソッドを使用して、生成された SQL クエリにそれらを強制的に含めることができます。
ただし、(たとえば) エンティティを受け入れ、すべてのアイテムを読み込む必要があるヘルパー メソッドがある場合、Include
使用できるメソッドはありません。
ブルート フォース アプローチは、それらをループすることです。
推奨事項が 100 件ある場合、バックグラウンドで 101 件の SQL クエリが作成されます。理想的には、SQL への 1 回の旅行ですべてのRecommendation
ANDオブジェクトをロードするメソッド/アプローチが必要です。User
私にお金をみせて。
編集これが良いアーキテクチャか悪いアーキテクチャかについて議論することにあまり興味がありません。質問のためにシナリオを単純化しました。私が求めていることを EF API で実行できますか?
編集2
Ladislav の編集は、新しいアプローチへの希望をもたらしましたが、私はまだそこまで進んでいないようです。
私はこれを介して私が望むものを達成することができます:
このアプローチは使用できませんLoadProperty
...
...エラーで失敗するため...
指定されたナビゲーション プロパティ Recommendations.User が見つかりませんでした。
コンテキストへの参照がない場合、これらのアプローチはどちらも機能しません。
hibernate - groovy / grails / hibernate - セットを積極的に取得するように設定する
ドメインクラスを使用して、grails で休止状態を構成しています。追加した:
ただし、オブジェクト グラフをプルすると、各画像が読み込まれません。お知らせ下さい。
ありがとう。
nhibernate - HQL を使用してプロパティを熱心に読み込むことはできますか?
次の HQL クエリで顧客を熱心に読み込む方法を考え出そうとしています。
注文と顧客の間には通常の多対 1 の関係があります。
可能であれば、マッピングではなくクエリでこれを実行したいと思います-「結合フェッチ...」のように
たぶん、クエリは結合としてリファクタリングされ、私はメンタルブロックを抱えています.
何か案は?
entity-framework - EF:遅延読み込み、熱心な読み込み、および「列挙可能なものの列挙」
遅延読み込みなどについて混乱しています。
まず、これら2つのステートメントは同等ですか。
つまり、(1)で「インクルード」を使用すると、遅延読み込みを使用しているにもかかわらず、ナビゲーションコレクション/プロパティが、要求された特定のコレクションとともに読み込まれます。
また、(2)では、積極的な読み込みを使用しているため、特にリクエストしなくても、ステートメントはすべてのナビゲーションエンティティを読み込みます...そうですか?
2番目:積極的な読み込みを使用している場合でも、次のコードのように、「列挙可能なものを列挙する」まで、データは実際にはデータベースからダウンロードされません。
foreachループが実行されるまで、データは実際にはダウンロード(「列挙」)されません...そうですか?つまり、「vardates」行はクエリを定義しますが、クエリはforeachループまで実行されません。
それを考えると(私の仮定が正しければ)、積極的な読み込みと遅延読み込みの本当の違いは何ですか?どちらの場合も、列挙するまでデータは表示されないようです。私は何かが足りないのですか?
(私の特定の経験は、コードファーストのPOCO開発ですが、質問はより一般的に当てはまるかもしれません。)
linq-to-sql - 結合なしで Linq-to-SQL プリロードを使用する
多くの人と同じように、コードをできるだけシンプルで読みやすく保ちながら、アプリから最高のパフォーマンスを引き出すことを目指しています。私はLinq-to-SQLを使用しており、データレイヤーを可能な限り宣言的に保つようにしています。
私は、SQL 呼び出しが最もコストのかかる操作であるという前提に基づいて操作しています。したがって、私はそれらの量を最小限に抑えようとしていますが、最適化が難しい非常に複雑なクエリは避けようとしています.
適切な例: 私はDataContext でDataLoadOptionsを使用しています。その目標は、関連するエンティティをプリロードすることにより、クエリの量を最小限に抑えることです。(別名、熱心な読み込みと遅延読み込み。)
問題: Linq は結合を使用して目標を達成します。すべてと同様に、それはトレードオフです。取得するクエリは少なくなりましたが、これらの結合されたクエリはより複雑でコストがかかります。SQL Profiler に入ると、これが明確になります。
したがって、結合なしでプリロードするためのLinqのオプションが必要です。これは可能ですか?これは次のようになります。
多対多の関係を提供するテーブル、Persons
テーブルItems
、およびテーブルがあります。PersonItems
Persons のコレクションをロードするとき、PersonItems と Items もすべて積極的にロードしたいと思います。
Linq は現在、2 つの結合を含む 1 つの大きなクエリでこれを行います。個人用、それらの個人に関連するすべての PersonItems 用、およびそれらの PersonItems に関連するすべてのアイテム用の 3 つの非結合クエリです。次に、Linq はそれらを関連するエンティティに自動的に配置します。
これらはそれぞれ、高速なファイアホース タイプのクエリになります。長期的には、予測可能な Web スケールのパフォーマンスが可能になります。
それが行われたのを見たことがありますか?
ruby-on-rails - 入れ子属性との関連付けを熱心にロードすることは可能ですか?
簡単に言うと、恐ろしい2(n)クエリの問題が発生しました。n =データベース内のスキルの数の場合、私のcharacters#editフォームはページをロードするために2(n)クエリを実行します。スキルごとにPlayerSkill(結合テーブル)を選択し、スキルごとに1回スキルを検索します。
これが状況に関連すると私が信じるいくつかのコードです。本質的に、このプロセスに関係するモデル、ビュー、およびコントローラーは、モデルの検証が少なく、私が気にしないアクションも少なくなります。
コントローラー:
モデル:
問題のあるビュー(HAML):
状況についての私の理解は、(大まかに)単一の追加クエリで関連付けを取得するための積極的な読み込みが存在することです。
2つの領域で積極的な読み込みを適切に適用する必要がありますが、その方法については途方に暮れています。
steb_player_skillsメソッドでは、キャラクターにPlayerSkillオブジェクトがまだないことを前提として、 PlayerSkillオブジェクトを作成する必要があります。 データベース内の各スキルをループするため、ここで積極的に読み込むことでメリットが得られる可能性があります。これが最初の「nクエリ」の出所です。
次に、ビューで、fields_forは、取得したすべてのPlayerSkillをループします。これは、ここで熱心にロードする方法がないため、= ps.object.skill.nameを呼び出してスキルの名前を出力すると、スキルルックアップが実行されます。 、「n-クエリ」の2番目のセットを取り込みます。
私の主な関心事はビューレイヤーにあります。fields_forを使用してネストされたフォームを生成する場合に、関連付けを熱心にロードする方法を説明するドキュメント(Rails APIなど)が見つかりません。
ありとあらゆる回答をありがとう:)〜Robbie
graph - Joinload / sqlalchemy での (サブ) グラフ全体の熱心な読み込み
Task
other に依存できるオブジェクトがあるとしましょうTasks
。特定のタスクのサブタスクのセットすべてを適切に熱心に/結合してロードする方法はありますか?
ruby-on-rails - 2つのクラスと積極的な読み込みを使用したThinkingSphinx検索
TSを使用して、2つのモデル(クラス)を同時に検索します。
コントローラー内:
どういうわけか、熱心な読み込みを使用することは可能:variants
ですか?