Entity Framework desideroso caricamento / dati di riferimento

4

Mi sto sforzando di capire come utilizzare le entità carico e come assegnare le relazioni quando creo nuove entità. A proposito, sto usando EF5 POCO.

Sto ripresentando una grande gerarchia di entità da un database, che rappresenta i risultati delle analisi chimiche. Come semplice esempio, ho un'entità "AnalysisResult" con due proprietà generate che la correlano a un'entità "ChemicalElement" - ChemicalElement e ChemicalElementId . Cose standard finora.

Ho iniziato recuperando i miei AnalysisResults dal database e desiderosi di caricare i relativi ChemicalElements utilizzando l'istruzione LINQ .Include , il che significa che potevo accedere all'elemento chimico di un risultato semplicemente tramite AnalysisResult.ChemicalElement . Questo andava bene per i risultati caricati dal database, ma cosa accadrebbe se volessi creare un nuovo AnalysisResult: come potrei ottenere l'entità ChemicalElement che volevo assegnargli?

Dato che gli elementi chimici non cambiano mai, ho deciso di trattarli come "dati di riferimento / ricerca", quindi ho abbandonato il carico di caricamento e ora richiamo tutti ChemicalElements in una raccolta separata che posso riferire a ogni volta che ho bisogno. Lo svantaggio del calo del carico di caricamento è che un AnalysisResult caricato dal database ha una proprietà .ChemicalElement nullo, quindi devo usare la sua proprietà .ChemicalElementId per cercare l'entità ChemicalElement nella mia "collezione di riferimento".

Ho sovradimensionato la soluzione? Dovrei mantenere l'idea della "raccolta di riferimento" di ChemicalElement ma anche e caricarla con gioia quando si recuperano gli AnalysisResults esistenti? Sembra inutile recuperarli (potenzialmente) due volte - una volta quando li recupero tutti e di nuovo durante il caricamento ansioso durante il recupero di AnalysisResults.

    
posta Andrew Stephens 05.03.2013 - 11:34
fonte

1 risposta

1

Decidere se caricare alcune informazioni (desiderose o pigre) dipende principalmente dai tuoi schemi di utilizzo.

Immagino che la visualizzazione delle informazioni chimiche sia lo scopo principale della tua applicazione.

Su una precedente applicazione che funzionava con le auto abbiamo memorizzato nella cache proprietà come il colore della vettura e i tipi di corpo. Abbiamo effettuato la connessione con i dati provenienti dal database nella vista (utilizzando controlli / helper).

Questo ha fatto in modo che non sovraccarichiamo il database con le mani pesanti.

    
risposta data 06.03.2013 - 08:43
fonte

Leggi altre domande sui tag