LINQ to SQL implementa, per default, politiche di lazy (o "deferred") loading: al momento di esecuzione di una query, infatti, viene caricato in memoria solo il primo livello del grafo mentre gli oggetti correlati sono creati al momento dell'effettivo utilizzo. E' possibile disabilitare il deferred loading impostando opportunamente la proprietà DeferredLoadingEnabled del data context:
DataContext db = new DataContext(connectionString);
db.DeferredLoadingEnabled = false;
Questa impostazione si limita però a disabilitare il caricamento on demand, non impostando un fetch plan di tipo Immediate Loading. E' a questo punto possibile specificare quale parte del grafo popolare mediante l'uso del metodo LoadWith della classe DataLoadOptions. Supponendo di voler caricare l'elenco dei clienti del database Northwind, contestualmente agli ordini di ciascun cliente, sarà possibile effettuarlo nel seguente modo:
DataLoadOptions opt = new DataLoadOptions();
opt.LoadWith<Customer>(c => c.Orders);
db.LoadOptions = opt;
var customers = from c in db.GetTable<Customer>() select c;