問題タブ [lazy-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.
domain-driven-design - 遅延読み込みなしで集計エンティティにアクセスする
DDD の哲学に従い、集約のエンティティ オブジェクトに直接アクセスしたくありません。したがって、関連付けられたエンティティを取得するには、ルート オブジェクトを呼び出す必要があります。しかし、それ以外の場合は、ルートが呼び出されたときに、関連するすべてのエンティティをロードしたくない場合があります。それが遅延読み込みの目的ですか?
linq の遅延読み込み機能を無効にすると、関連するすべてのオブジェクトを毎回ロードせずに、ルートを介してエンティティ オブジェクトにアクセスするにはどうすればよいですか?
編集:
たとえば、ルート エンティティとして Person があり、その Person に Name、Addresses、OwnedProperties があるとします。名前を表示できるように人物のリストを取得したい場合、リポジトリへの呼び出しのたびに所有プロパティをロードする必要はありません。逆に、別のページでは、OwnedProperties のリストを表示したいが、呼び出しで他の情報をロードしたくない場合があります。その所有プロパティなしで新しい人物オブジェクトを作成する以外に、所有プロパティエンティティなしで Person を呼び出す簡単な方法は何ですか?
wcf - wcf のシリアル化と nhibernate の遅延読み込み
NHibernate/ActiveRecord と WCF で .net 2.0 を使用しています。
これまで NH Lazy load を使用していませんでしたが、パフォーマンス ペナルティが大きすぎて無視できないため、使用し始めています。
私がこれまでに読んだことから、遅延読み込みと WCF へのシリアル化を備えた NH エンティティを使用することは簡単なテーマではありませんが、その利点は無視するには大きすぎます。
ここで見つけたコードを使用: WCF Serialization NHibernateを使用して、WCF に基本型を認識させることができました。
また、次のように DataContractSerializer を作成しています。
私の問題は、次のようなものがある場合です。
と
Branch.DefaultPOSCustomer と POSCustomer.BelongsToBranch は 2 つの無関係なエンティティですが、同じエンティティです。たとえば、Branch 200 には DefaultPOSCustomer 100 があり、POSCustomer には BelongsToBranch 200 があります。
問題は、WCF がオブジェクト グラフをシリアル化しようとすると、DefaultPOSCustomer と BelongsToBranch の間で、それらが同じエンティティであり、既にシリアル化されていることを認識しないかのように、スタック オーバーフローが発生するまでバウンスすることです。
これらのクラスで Lazy = true をオフにすると、シリアル化は正常に機能します。
- DataContractSerializer は、エンティティが既にシリアル化されていることをどのように判断しますか?
- どうすればこの動作を停止できますか?
- WCF を使用して遅延読み込みエンティティをシリアル化する他の方法はありますか?
ps NHibernate Proxyに似たものを作成するという別の解決策を検討していましたが、他のクラスに関連するプロパティを生のキーに置き換えるため、タイプBranchのプロパティを持つ代わりに、タイプのプロパティを持つことになります値 200 の int です。この方法で、私が遭遇したサイクルの問題を回避できるかもしれませんが、維持するのがかなり複雑になるため、最後の手段としてこれを試してみます。
編集:私はたくさんのエンティティを持っているので、それぞれに dto を作成することは問題外であり、動的に作成するのは複雑になるので、それを避けるか、最後の手段として使用したいと思います. また、サーバー側でビジネス ロジックを実行する必要があるため、生データではなくエンティティが必要になります。
編集:まあ、NH/AR/WCF の直接の方法で行く運はありません。簡単に思える DTO を作成します。
java - ビューでセッションを開く
私は休止状態の唯一の遅延初期化問題に次のアプローチを使用しています.それがうまくいくかどうか教えてください. いくつかの理由により、強制的に永続化レイヤーにトランザクションを実装する必要があります。
フィルターでは、次のコードを使用しています
このアプローチは正しいですか?? 問題が発生する可能性がありますか
.net - ADO.Net Entity Framework でスカラー プロパティを遅延ロードできますか?
私は1つの巨大な列を持つデータベーステーブルImageを持っています: Data。
その 1 つの列を遅延読み込みしたいので、すべての画像のリストを取得するときにすべてを照会する必要はありません。
次のように、データを独自の列とエンティティに入れることができることを知っています。
しかし、私はしなければなりませんか?
c# - 遅延読み込みへの私のアプローチに欠陥がありますか?
プラットフォーム: Visual Studio 2008 SP1、Resharper 4.1、.NET 3.5
GetProperty<T>
プロパティ値を遅延して返す静的メソッドを持つクラスがあります。
しかし、上記のメソッドを使用してプロパティを返すと、プライベート バッキング フィールドが割り当てられていないという 2 つの警告が表示されます。ただし、後で必要な場合にのみ割り当てられます。
この警告は無視できますか?
-- または --
プロパティをロードする方法に欠陥がありますか?
c# - Webアプリケーションでの遅延読み込みについて気にする必要がありますか?
シングルトンの遅延読み込みを行うには、次のパターンを使用することを学びました。
しかし、より単純なパターンは次のようになります。
これは遅延読み込みではありません。しかし、これは本当にWebアプリケーションで気にする必要があることですか?
java - コレクションをロードせずに、Hibernate で遅延ロードされたコレクションに要素を追加するにはどうすればよいですか?
ブリキに書かれていること。コレクションは大量のデータ (〜 100,000 レコード、単調に増加) であるため、コレクションを強制的にロードせずに Hibernate でコレクションを変更したいと考えています。
今、私はこのリストに要素を追加します。getEvents ().add (newEvent)
もちろん、これによってevents
データが取り込まれます。
マッピングは次のとおりです。
これをどのように行う必要がありますか?
java - プロキシを使用したレイジー 1 対 1 が機能しない
ディーラーと売り手の間に 1 対 1 の関係がありますが、これはプロキシを使用するのが面倒です。外部キーが定義されている側 (販売者、販売者を参照) では、これは正常に機能します。しかし、反対側からはうまくいきません - 売り手は常に熱心に積み込まれています. 「遅延読み込みに関するいくつかの説明」constrained="true"
で説明されているように設定しましたが、役に立ちませんでした。
使用されるマッピングは次のとおりです。
両方のクラスが 1 つのテーブルに存在することは問題ですか? 厳密に言えば、関係はデータベースに制約されていません (このモデルを使用することはできません) が、ドメイン モデルには常に両方のエンティティが必要であり、アプリケーションはこれを保証します。
.net - 遅延読み込み Infragistics Ultragrid
Infragistics UltraGrid for Windows Forms が遅延読み込みをサポートしているかどうか知っている人はいますか? もしそうなら、それを行う方法は?