DataLoadOptions Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce il caricamento immediato e il filtro dei dati correlati.
public ref class DataLoadOptions sealed
public sealed class DataLoadOptions
type DataLoadOptions = class
Public NotInheritable Class DataLoadOptions
- Ereditarietà
-
DataLoadOptions
Esempio
Quando si recupera Customers dal database di esempio Northwind, è possibile usare DataLoadOptions per specificare che Orders deve essere recuperato anche. È anche possibile specificare il subset di Orders da recuperare.
Commenti
La DataLoadOptions classe fornisce il caricamento immediato e il filtro dei dati correlati.
Quando si esegue una query per un oggetto, si recupera effettivamente solo l'oggetto richiesto. Gli oggetti correlati non vengono recuperati automaticamente contemporaneamente. Per ulteriori informazioni, consulta Querying Across Relationships.
La DataLoadOptions classe fornisce due metodi per ottenere il caricamento immediato dei dati correlati specificati. Il LoadWith metodo consente il caricamento immediato dei dati correlati alla destinazione principale. Il AssociateWith metodo consente di filtrare gli oggetti correlati.
Regole
Considerare le regole seguenti relative all'utilizzo DataLoadOptions :
- L'assegnazione di un DataLoadOptions oggetto a dopo DataContext l'esecuzione della prima query genera un'eccezione.
- La modifica di un oggetto DataLoadOptions dopo che è stata assegnata a un DataContext genera un'eccezione.
Gestire i cicli
LoadWith le direttive e AssociateWith non devono creare cicli. Di seguito sono riportati esempi di tali grafici:
Esempio 1: Autocursive
dlo.LoadWith<Employee>(e => e.Reports);
Esempio 2: back-pointer
dlo.LoadWith <Customer>(c => C.Orders);dlo.LoadWith <Order>(o => o.Customer);
Esempio 3: cicli più lunghi
Anche se questo non deve verificarsi in un modello ben normalizzato, è possibile.
dlo.LoadWith <A>(a => a.Bs);dlo.LoadWith <B>(b => b.Cs);dlo.LoadWith <C>(c => c.As);
Esempio 4: Sottoquery ricorsive self-recursive
dlo.AssociateWith<A>(a=>a.As.Where(a=>a.Id=33));
Esempio 5: sottoquery ricorsive più lunghe
dlo.AssociateWith<A>(a=>a.Bs.Where(b=>b.Id==3));dlo.AssociateWith<B>(b=>b.As.Where(a=>a.Id==3));
Le regole generali seguenti consentono di comprendere cosa accade in questi scenari:
LoadWith: ogni chiamata a LoadWith controlla se i cicli sono stati introdotti nel grafico. Se sono presenti, 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
Whereclausola viene eseguita su tuttiA, non solo su quelli filtrati in base all'espressione SubQuery stessa (perché ciò sarebbe ricorsivo). - Nell'esempio 5 la prima
Whereclausola viene applicata a tutti gliBoggetti , anche se sono presenti sottoquery inB. La secondaWhereclausola viene applicata a tutti gliAelementi anche se sono presenti sottoquery inA.
- Nell'esempio 4, la
Costruttori
| Nome | Descrizione |
|---|---|
| DataLoadOptions() |
Inizializza una nuova istanza della classe DataLoadOptions. |
Metodi
| Nome | Descrizione |
|---|---|
| AssociateWith(LambdaExpression) |
Filtra gli oggetti recuperati per una determinata relazione. |
| AssociateWith<T>(Expression<Func<T,Object>>) |
Filtra gli oggetti recuperati per una determinata relazione. |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| LoadWith(LambdaExpression) |
Recupera i dati specificati correlati alla destinazione principale usando un'espressione lambda. |
| LoadWith<T>(Expression<Func<T,Object>>) |
Specifica quali oggetti secondari recuperare quando viene inviata una query per un oggetto di tipo T. |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |