Ich habe eine Datamapper-Klasse, die eifrig jede Eigenschaft lädt, die kein Lazy-Attribut hat. Ich habe zwei Entitäten, Staat und Land, Land hat eine umgekehrte Beziehung zum Staat, in dem es eine Liste aller Staaten dieses Landes enthält und Staat hat eine Vorwärtsbeziehung zu Land, in dem es eine Eigenschaft Land hat, die das Land das eifrig lädt es ist zugeordnet. wenn ich jedoch versuchen, eines dieser Objekte abzurufen, können Sie einen Staat sagen, das ist, was passiert:Wie kann ich die Abruftiefe eines geladenen Datamappers steuern?
- Staat wird geladen von Mapper
- Mapper erreicht eine eifrige Eigenschaft Land
- Mapper ruft das Land für diesen Zustand
- Mapper lädt das Land
- Mapper einen eifrigen Sammlung Eigentum der Staaten, wo die Cache mit
- Mapper lädt eine Liste von Staaten und beginnt Abbilden jedes einzelnen erreicht man kann es.
- GOTO 1 für jeden Staat in Land
ich ratlos bin geladen, wie ich diese Schleife zu vermeiden. Hauptsächlich suche ich nach Ideen. Ich werde jeden Code posten, den jemand fragt, aber dieser Prozess umfasst VIEL Zeilen Code, also wollte ich die Frage nicht mit Code überfluten.
Vielen Dank im Voraus!
Edit:
Ordnung nach Beratung Matt Howells folgenden und Untersuchung tiefer in die DataMapper Muster Martin Fowler in der Tat zu einem zyklischen Bezug auf Seite 169 und 170. Sein Vorschlag ein leeres Objekt wird verwenden, und es spricht laden in eine Identity Map und gibt sie zurück, wodurch das rekursive Laden gestoppt wird. Ich habe diesen Absatz ungefähr 1000 Mal gelesen und ich verstehe immer noch nicht, wie dies die Ladung stoppt und darüber hinaus bin ich verloren, wann oder wie ich wissen würde, wann ich dieses leere Objekt in meine Identitätskarte laden soll. Ich entschuldige mich dafür, dass ich hier dicht bin, aber das scheint einfach über meinen Kopf zu fliegen.
Nochmals vielen Dank.
Ich verfolge tatsächlich alle Objekte, die geladen wurden. Allerdings, und ich denke, ich bin nur dicht, ich bin nicht in der Lage zu sehen, wie ich das nutzen kann. Ich versuche die Abruftiefe zu kontrollieren, aber sie muss spezifisch für einen Urheber kontrolliert werden. Was ich versuche zu erreichen, ist im Wesentlichen: Staat (Urheber) -> Land -> Staaten -> [STOP], aber wenn ich jeden einzelnen Staat in Staaten abbilde, haben die Entitäten kein Konzept der Existenz des Urhebers des Antrags . Es scheint also, dass die Anwendung eines Zählers, der für den Urheber spezifisch ist, nicht in Frage kommt. Ja? – joshlrogers
Ich habe es auf meinem Schreibtisch bei der Arbeit, werde sehen, ob ich morgen etwas finden kann. Vielen Dank. – joshlrogers
Ich habe Martin Fowlers Rat hinzugefügt, aber ich bin immer noch verloren. Irgendein Rat? – joshlrogers