問題タブ [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.

0 投票する
2 に答える
2775 参照

c# - 条件付きのLINQ to SQLの熱心な読み込み

LINQ to SQL を学習しようとしていますが、LoadWith 関数について知りました。私が見つけたすべての例は、LoadWith 関数で指定したテーブルからすべてのレコードをロードします。

私が知りたいのは、この例で最後のブログ投稿だけを読み込むことができるかどうかです。

私はもう試した

しかし、その構文は好きではありません。

0 投票する
1 に答える
310 参照

.net - LINQを使用してSQLから完全グラフをロードする

SubMenus(同じタイプのMenuであるため、SubMenusとItemsも含めることができます)とItems(異なるタイプ)を持つMenuクラスがあり、それらを2つのテーブル(1つはMenus用、もう1つはItems用)に格納したとします。 。LINQ to SQLを使用してMenuクラス(そのすべてのサブメニューとアイテム)の完全グラフをロードする方法はありますか?

0 投票する
2 に答える
1188 参照

ruby-on-rails - メモリ内のeager-loadedアソシエーションの更新

私の現在の Rails アプリでは、5 秒ごとにデータベースにアクセスしたくない長時間実行されるバックグラウンド タスクを開始できるように、データベースから大量のデータをメモリにプルしています。

これはすべてうまく機能していますが、可能であれば削除したい洗練されていないコードがいくつかあります。

たとえば、User モデルがあり、その User モデルが連絡先の形で他の User モデルにリンクでき、それが最初の User モデルにリンクし直すことができる状況があります。これは次のようにモデル化されています (Milan Novota の以前の支援に感謝します): -

だから今私は入力することができます

ユーザーaのすべての連絡先を取得します。ここで、ユーザー a を介してユーザー b の連絡先を取得したいとしましょう (理由はわかりませんが、これは単なる例です!)

これで、ユーザー a の名前を取得できます (複雑で回りくどい、現実世界では決して使用されないような方法で)

ここまでは順調ですね。ここで、ユーザー a の名前を変更します

データベースから以前と同じようにユーザーaの名前に再度アクセスすると、取得します

ただし、この値を熱心にロードしてメモリに保持すると、

しかし、次のことを行うと正しい答えが得られます

明らかに、eager-loading は、元のユーザーと ContactRecord オブジェクトからeager-loadされたユーザーに対して異なる User オブジェクトを作成しています。

だから(ついに!)私の質問はこれです: -

現時点では、使用してこれを回避しています

(@users は、熱心に読み込まれた User オブジェクトのリストです)。代わりに、eager-loaded User オブジェクトを更新する方法はありますか?

ご注意ください: -

a) 私は以下を使用して熱心に読み込んでいます

b) 明らかに、これは私が作業している実際のコードではありませんが、そのコードを示すためにさらに多くの説明と説明が必要であり、十分に退屈させたと思います! 私が使用している実際の例では、奇妙に見えるかもしれませんが、正しく機能するためにこの構造が必要であると信じてください! ;)

c) 例を再構築する際にタイプミスやエラーが発生した可能性がありますが、それらは無視してください。私が知る必要があるのは、データベースにアクセスせずに熱心にロードされたユーザーをリロードできるかどうかだけです。

よろしくお願いします!

更新: 以下で説明するように、モデル データはプロセス実行の最後までデータベースに保存されないため、データベース内のデータは変更されていないため、リロードは機能しません。

0 投票する
1 に答える
1752 参照

nhibernate - Fluent NHibernateのAutoPersistenceModelを使用しますが、単一のオブジェクトに積極的にロードします

エンティティを自動マッピングするためにFluentNHibernateを使用しています。

これは、自動マッピングに使用しているコードです。

これは問題なく機能します。ただし、ドメインの1つのオブジェクトにEagerLoadingを含める必要があります。この答えを見つけました。しかし.ForTypesThatDeriveFrom<IEagerLoading>(map => map.Not.LazyLoad())、コードに行を追加して実行すると、次の例外が発生します。

  • IEagerLoadingのマッピングドキュメントを作成しようとしたときにエラーが発生しました

IEagerLoading熱心にロードしたいオブジェクトをマークするためにインターフェース()を使用していることに注意してください。

誰かがこれを行う方法を助けることができますか?自動マッピング機能を維持したいことを忘れないでください。

ありがとう

0 投票する
2 に答える
715 参照

ruby-on-rails - Rails 2.2.2 で熱心な読み込みが機能しない

私は次のようなモデルを扱っています:

own_id と owner_id が適切な場所にあると推測できます。問題は、アプリ内の別の mvc チェーンのコントローラーで、

動作しません。当然、owner_id、列を取得しますが、それではできません

何を与える?つまり、結果をビューに渡す前に直接割り当てを行うことができます。

しかし、それはばかげているようです。さあ、私を当惑させてください。私が見逃した明らかなことは何ですか?これは私のアプリの他の場所でも機能しますが、違いを見つけることができません。いくつかの一般的なトラップはありますか?何でも役立ちます。

ありがとうございました

0 投票する
1 に答える
476 参照

ruby-on-rails - ActiveRecord と Rails を使用して、熱心に読み込まれた条件を後で遅延読み込みにする方法

まず、いくつかのコードを示します。

OK、後でコントローラーで、すべての従業員を正しく検索したいと思いました。結合と条件付き検索でそれを行うのに役立つように、名前付きスコープを設定しました。しかし、問題はそのユーザーの役割をすべて表示したいビューにありますが、従業員の役割のみが表示されます。

とにかく、「user.roles」と言って、既に熱心にロードした後にビューに遅延ロードすることはできますか?

0 投票する
2 に答える
3991 参照

c# - LINQ to Entity Framework Many-ManyEagerLoadingの問題

私は次のクエリを持っています:

そして、すべてが機能し、機器を入手して、Manufacturersテーブルを正しく(熱心に)ロードします。しかし、次の多対多のクエリを実行しようとすると、次のようになります。

ここで、「ContractEquipments」は「Equipments」と「Contracts」の間の多対多のルックアップですが、このクエリを実行すると、Manufacturersテーブルが簡単に読み込まれなくなります。次のことを行わずにこれを修正する方法についてのアイデア:

このプロジェクトの実行には何時間もかかります。データベース呼び出しの数を抑えたいと思います。

編集#1:

私もこれを試しましたが成功しませんでした:

0 投票する
3 に答える
11570 参照

nhibernate - NHibernate を使用した子コレクションの熱心な読み込み

ルート エンティティをロードし、すべての子コレクションと集約メンバーを積極的にロードしたいと考えています。

SetFetchModeFluentNHibernate でを使用しようとしましたが、3 レベルの深さがあるため、子コレクションの 1 つで重複が発生しています。DistinctRootEntityResultTransformer残念ながら、ルートの重複を削除するだけです。

これをアーカイブするためにマルチクエリまたは同様のものを使用できますか?

さらに、このアプローチでは、データベースからの結果セットが不必要に膨大になるのではないでしょうか?

助言がありますか?

0 投票する
1 に答える
1101 参照

entity-framework - Entity Framework を使用した集約ルートの一括読み込み

必要なエンティティ ツリーをロードするための、より構造化されたアプローチを作成したいと思います。

かなりの量のデータが必要なので、ここに示すように、タイプ セーフなインクルード (通常のインクルードですが Lambda を使用) を使用してこれを行っています

私が言ったように、基本的には 1 つの親アイテムの下にあるエンティティ ツリー全体である、大量のデータが必要です。

今、私はこれを次のように行うことができます:

ご覧のとおり、インクルードで満たされたこの行は非常に大きくなる可能性があります。実際、これは実際のコードの非常に単純化されたサンプルです (住宅は含まれていません)。

だから私がやりたいのは、ツリー内のブランチを担当するメソッドを作成することです。メソッドがオブジェクトクエリを受け入れて子を含めることができる場所で、次に「子ローダーメソッド」を呼び出します。また、子の型を持つプロパティがある限り、親は重要ではありません。

これはおそらくあまり意味がありません:

等々。しかし、私は本当にそれを理解することはできません... 着信クエリと子メソッドの呼び出しとの間にリンクがありません。

誰かがこのようなことをしましたか?または、誰かが私にいくつかの指針を与えることができますか?

0 投票する
2 に答える
1727 参照

c# - NHibernate FetchMode.Eager を適切にテストするにはどうすればよいですか?

FetchMode.Eager が正しく動作することをテストする統合テストを作成する方法はありますか? MySubObject を取得するときに、データベースに送信されないことを確認したいと考えています。

コード: