Quando si parla di relazioni One-To-Many, ad esempio Cliente-Ordini, spesso si ha l'esigenza di caricare gli ordini in Lazy, ovvero solo quando vengono utilizzati nel codice. Questo è il comportamento di default con LINQ To SQL ma non sempre è ideale in quanto spesso capita di non aver bisogno di tutti gli ordini del cliente ma solo di una parte di essi.
Tramite il metodo AssociateWith del DataContext, si può pilotare il Lazy Loading decidendo quali record caricare. Il metodo è generico ed accetta in input una lambda che rappresenta il filtro da applicare alla query effettuata per caricare i dati in Lazy.
In questo esempio, vengono caricati solo gli ultimi 10 ordini di ogni cliente italiano ordinati per data.
using (NWDataContext context = new NWDataContext())
{
DataLoadOptions options = new DataLoadOptions();
options.AssociateWith<Customer>(c => c.Orders.OrderBy(p => p.OrderDate).Take(10));
var q = from c in context.Customers
where c.Country == "Italy"
select c;
foreach (var customer in q)
{
Console.WriteLine(customer.Orders.Count);
}
Console.ReadLine();
}
- #55 - Accedere ai parametri di sistema da un'applicazione WPF
- Rilasciata una patch per l'intellisense jQuery in Visual Studio 2008
- #934 - Accedere ai dati usando LinqDataSource
- Abusi della parola chiave var e poca leggibilità dei generics
- Utilizzare Visual Studio 2008 per semplificare lo sviluppo con LINQ to SQL
- 10annidi.ASPItalia.com: nascono LINQItalia.com e SilverlightItalia.com
- #60 - Utilizzare Stored Procedure per aggiornare i dati con LINQ To SQL
- #46 - Verificare se esiste almeno un determinato oggetto in una lista con la clausola Any di LINQ
- #50 - Caricare immediatamente tutti i dati in una query con le LoadOptions di LINQ To SQL
- LINQ to SQL: Chiamare extension method non implementati
- #60 - Utilizzare Stored Procedure per aggiornare i dati con LINQ To SQL
- Introduzione a LINQ to XML
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!