Nello script #69 abbiamo visto come precaricare un grafo di oggetti eseguendo una sola query sul database. Questa opzione è ideale quando si sa a priori che si deve accedere a tutti i dati del grafo. In alcuni casi, si deve caricare un'entità associata solo in base a determinate condizioni e quindi torna comodo avere un meccanismo per caricare "on demand" i dati necessari.
Entity Framework non permette un caricamento dilazionato in maniera trasparente ma adotta un meccanismo esplicito, ovvero i dati vengono caricati nel momento in cui si chiama il metodo Load della proprietà da caricare. Ad esempio, se si ha una lista di ordini e si devono caricare i dettagli solo di quelli spediti in italia, allora il metodo migliore è scorrere la lista e caricare i dettagli on demand.
using (NWContext ctx = new NWContext()) {
foreach (var o in ctx.Orders)
{
if (o.ShipCountry == "Italia")
{
o.Details.Load();
}
}
}
Nel caso si debba sapere se un'associazione è gia stata caricata dal database o meno, si può ricorrere alla proprietà IsLoaded.
Questo meccanismo è possibile grazie al fatto che le proprietà che costituiscono un'associazione vengono esposte in maniera indiretta tramite le classi EntityReference e EntityCollection
public EntityCollection<OrderDetails> Details...
public EntityReference<Customer> Customer...
- #57 - Ottimizzare il trasferimento dei dati binari in WCF
- LINQ to SQL: Chiamare extension method non implementati
- Introduzione ad ASP.NET 3.5
- #60 - Utilizzare Stored Procedure per aggiornare i dati con LINQ To SQL
- Uno sguardo a LINQ to SQL
- BookStore Pubs 2.1
- WCF LINQ To SQL il SP1 e la serializzazione
- LINQ To SQL ed un problema di null
- Sviluppare workflow sequenziali con WF
- Prima beta pubblica per il SP1 del .NET Framework 3.5 e VS 2008
- #85 - Utilizzare LINQ per scoprire i processi in esecuzione più lenti su IIS 7.0
- MailWebEventProvider perche sei public e abstract
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!