Aggiornamento: novembre 2007
Fornisce il caricamento e il filtraggio immediati dei dati correlati.
Spazio dei nomi:
System.Data.Linq Assembly:
System.Data.Linq (in System.Data.Linq.dll)
Visual Basic - (Dichiarazione)
Public NotInheritable Class DataLoadOptions
Dim instance As DataLoadOptions
public sealed class DataLoadOptions
public ref class DataLoadOptions sealed
public final class DataLoadOptions
public final class DataLoadOptions
Generale
Quando si esegue una query per un oggetto, in realtà si recupera solo l'oggetto richiesto. Gli oggetti correlati non vengono automaticamente recuperati allo stesso tempo. (Per ulteriori informazioni, vedere Esecuzione di una query tra relazioni (LINQ to SQL).)
La classe DataLoadOptions fornisce due metodi per ottenere il caricamento immediato dei dati correlati specificati. Il metodo LoadWith consente il caricamento immediato dei dati correlati alla destinazione principale. Il metodo AssociateWith consente il filtraggio degli oggetti correlati.
Regole
Di seguito vengono riportate le regole che riguardano l'utilizzo di DataLoadOptions:
L'assegnazione di un oggetto DataLoadOptions a un oggetto DataContext dopo l'esecuzione della prima query genera un'eccezione.
La modifica di un oggetto DataLoadOptions dopo che è stato assegnato a un oggetto DataContext genera un'eccezione.
Gestione dei cicli
Le direttive LoadWith e AssociateWith non devono creare cicli. Di seguito sono riportati alcuni esempi di tali grafici:
Esempio 1: autoricorsivo
Esempio 2: puntatori all'indietro
Esempio 3: cicli più lunghi
Anche se non dovrebbero verificarsi in un modello ben normalizzato, è possibile che si verifichino.
dlo.LoadWith <A>(a => a.Bs);
dlo.LoadWith <B>(b => b.Cs);
dlo.LoadWith <C>(c => c.As);
Esempio 4: sottoquery autoricorsive
Esempio 5: sottoquery autoricorsive più lunghe
Di seguito sono elencate alcune regole generali che consentono di capire ciò che accade in questi scenari.
LoadWith Ogni chiamata a LoadWith controlla se i cicli sono stati introdotti nel grafico. In caso affermativo, come negli Esempi 1, 2 e 3, viene generata un'eccezione.
AssociateWith In fase di esecuzione il motore non applica le clausole SubQuery esistenti alla relazione all'interno dell'espressione.
Nell'esempio 4 la clausola Where viene eseguita a fronte di tutti gli oggetti A, non solo quelli sottofiltrati dall'espressione SubQuery stessa (perché sarebbe ricorsiva)
Nell'esempio 5 la prima clausola Where viene applicata a tutti gli oggetti B, anche se esistono sottoquery su B. La seconda clausola Where viene applicata a tutti gli oggetti A, anche se esistono sottoquery su A.
Quando si recupera Customers dal database di esempio Northwind, è possibile utilizzare DataLoadOptions per specificare che anche Orders verrà recuperato. È anche possibile specificare il sottoinsieme di Orders da recuperare.
Gerarchia di ereditarietà
System..::.Object
System.Data.Linq..::.DataLoadOptions
Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.
Windows Vista, Windows XP SP2, Windows Server 2003
.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Informazioni sulla versione
.NET Framework
Supportato in: 3.5
Riferimenti