私は、Lazy属性が付いていないプロパティを読み込もうとするdatamaクラスを持っています。私は2つのエンティティ、州と国を持っていますが、国はその国のすべての州のリストを含んでおり、州はその国が財産を持っているという点で国と前方関係を持っています。に割り当てられます。eager loading datamapperのフェッチ深さを制御するにはどうすればよいですか?
- 国家が
- マッパーが熱心財産国
- マッパーに達するマッパーによってロードされている状態のために国を取得している:私がしようとすると、これらのオブジェクトのいずれかを取得する場合は、これは何が起こるかである状態を言うことができます
- マッパーは
- マッパーが
- マッパーは、状態のリストをロードし、それができるキャッシュを使用して、個々の1をマッピングすることから始まる 国の熱心なコレクションプロパティに達した国にロードします。
- GOTO 1は国
にロードされた各状態のために、私はこのループを避けることができる方法についての損失でいます。だから私は主にアイデアを探しています。私は誰でも尋ねるコードを投稿しますが、このプロセスにはたくさんのコード行が含まれているので、コードで質問をあふれさせたくありません。
ありがとうございます!
編集:マット・ハウエルズのアドバイスに従い、Martin Fowler氏が実際に彼の提案は、空のオブジェクトを使用してにそれをロードすることですページ169の循環参照について話すと170んDataMapperのパターンを深く調査した後
よしアイデンティティマップを作成し、それを返して、再帰的ロードを停止する。私は約1000回この段落を読んだことがありますが、これがロードをどのように停止させるのか、また、この空のオブジェクトをいつアイデンティティマップにロードするのか、いつ、どのように失われるのか、まだ分かりません。私はここで濃密であることをお詫びしますが、これはちょうど私の頭の上を飛んでいるようです。
もう一度おねがいします。
私は実際に読み込まれたすべてのオブジェクトを追跡しています。しかし、私はちょうど密集していると思う、私はこれを利用できる方法を見ることができません。フェッチの深さを制御しようとしていますが、発信者固有の制御が必要です。私が達成しようとしているのは基本的には州(創始者) - >国 - >州 - > [STOP]ですが、私が州内にある個々の州ごとに地図を作成すると、 。だから、オリジネーターに特有のカウンターを適用しているようだが、それは疑問から外れているようだ。はい? – joshlrogers
私は職場の机の上に置いて、明日何かを見つけることができるかどうかを見ます。ありがとうございました。 – joshlrogers
私はMartin Fowlersのアドバイスを追加しましたが、私はまだ失われています。何かアドバイス? – joshlrogers