Fammi dimostrare un semplice esempio,
Class Organization
- ID type Number,
- Name type String,
- HAS A -> Collection
Class Facility
- ID type Number,
- Name type String,
- Location String ,
- HAS A -> Organization
Sto dimostrando un semplice riferimento circolare tra due oggetti di un modello anemico di dati. Supponendo che siano mappati su uno strumento ORM, una raccolta di strutture può essere recuperata pigramente da un'organizzazione, e allo stesso modo un'organizzazione può essere recuperata pigramente da una struttura.
Capisco la convenienza di questo, almeno sul livello intermedio. Con una singola struttura posso immediatamente ottenere informazioni sulla sua organizzazione dal codice. La mia domanda è:
Ci sono altri vantaggi rispetto ai riferimenti circolari nelle entità mappate ORM?
Nonostante le mie intense emozioni su questo argomento in questo momento, sto facendo del mio meglio per non caricare la domanda ...
Il principale svantaggio esasperante di cui soffro in questo momento è quando sto cercando di serializzare questi oggetti in XML e inviarli attraverso un servizio web, lontano dai comfort elevati della sua benevola sessione ORM. Non riesco a serializzarli come è perché i proxy ORM non possono essere inviati, devo o recuperare avidamente le entità figlio e inviare un albero di oggetti MASSIVE, o rimuovere i proxy dal grafico.
Abbastanza giusto, così ho scritto un'utilità per rimuovere semplicemente i proxy, Great! Serializza e le prestazioni sono piacevolmente buone, tuttavia quando ottengo questo oggetto da un servizio Web UpdateEntity, manca il resto del grafico dell'oggetto, e ora se dovessi aggiornare questa entità tramite l'ORM, penso che ho cancellato tutto di questi oggetti mancanti dall'albero. Non va bene.
Non posso fare a meno di ritenere che i riferimenti circolari presentino un enorme svantaggio in questo scenario e non riesco davvero a pensare a un buon modo per superare questo problema e ai paralizzanti problemi di prestazioni che ho il compito di risolvere senza dati riprogettazione del modello e rifattorizzazione massiva.
Quali sono le tue opinioni su questo? È davvero un odore di design?