Per default, LINQ To SQL precarica solamente i dati della tabella che viene richiesta; se questa ha delle tabelle collegate, queste non vengono interrogate. In questo modo, le performance sono ottimali perche si caricano solo i dati che servono.
Tuttavia, spesso si ha bisogno di avere a disposizione anche i dati delle tabelle figlie (per un ordine ci sono i dettagli ed il fornitore). Per questo motivo, una classe Order ha anche una proprietà Details ed una Supplier. Quando si accede a queste proprietà, dinamicamente LINQ verifica se i dati sono stati caricati e, se non ci sono, effettua la query sul database per recuperarli. Questo processo può essere ottimale in alcuni casi, ma, nel caso si stiano scorrendo 200 ordini, si fanno 200 interrogazioni al database per recuperare i dettagli e questo finisce per inondare il database di richieste rallentando il sistema.
Per ottimizzare le performance, LINQ permette di precaricare i dati anche delle tabelle figlie già quando si carica l'oggetto padre tramite la proprietà LoadOptions del DataContext.
using (NWDataContext ctx = new NWDataContext())
{
DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Order>(o => o.Order_Details);
ctx.LoadOptions = dlo;
ctx.Orders.Where(o => o.CustomerID == "ALFKI");
}
Tramite il metodo LoadWith si specifica che insieme all'oggetto Order va caricata anche la proprietà Order_Details che contiene tutti i dettagli dell'ordine.
- Cosa c'è in ASP.NET 3.5 Service Pack1
- #64 - Salvare una stringa xml in un file con LINQ To XML
- #46 - Verificare se esiste almeno un determinato oggetto in una lista con la clausola Any di LINQ
- #56 - Ottimizzare le performance di LINQ To SQL disabilitando l'ObjectTracking
- #83 - Utilizzare LINQ per estrarre indirizzi email validi ed errati da una lista
- #69 - Caricare in eager fetching una associazione con Entity Framework
- Entity Framework e le cancellazioni a cascata
- Riutilizzare porzioni di espressioni LINQ
- #62 - Eseguire comandi SQL dinamici con il metodo ExecuteCommand di LINQ To SQL
- Autopsia di un'applicazione - prima puntata
- Ad Aprile speciale con sei screencast dedicati a LINQ
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.






Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!