DataLoadOptions Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zapewnia natychmiastowe ładowanie i filtrowanie powiązanych danych.
public ref class DataLoadOptions sealed
public sealed class DataLoadOptions
type DataLoadOptions = class
Public NotInheritable Class DataLoadOptions
- Dziedziczenie
-
DataLoadOptions
Przykłady
Po pobraniu Customers z przykładowej bazy danych Northwind można użyć DataLoadOptions polecenia , aby określić, że Orders ma być również pobierana. Można nawet określić podzbiór Orders do pobrania.
Uwagi
Klasa DataLoadOptions zapewnia natychmiastowe ładowanie i filtrowanie powiązanych danych.
Podczas wykonywania zapytania o obiekt faktycznie pobierasz tylko żądany obiekt. Powiązane obiekty nie są pobierane automatycznie w tym samym czasie. Aby uzyskać więcej informacji, zobacz Querying Across Relationships (Wykonywanie zapytań między relacjami).
Klasa DataLoadOptions udostępnia dwie metody umożliwiające natychmiastowe ładowanie określonych powiązanych danych. Metoda LoadWith umożliwia natychmiastowe ładowanie danych związanych z głównym celem. Metoda AssociateWith umożliwia filtrowanie powiązanych obiektów.
Reguły
Rozważ następujące reguły dotyczące DataLoadOptions użycia:
- Przypisanie elementu DataLoadOptions do elementu DataContext po wykonaniu pierwszego zapytania powoduje wygenerowanie wyjątku.
- Modyfikowanie elementu DataLoadOptions po przypisaniu go do generowania DataContext wyjątku.
Obsługa cykli
LoadWith dyrektywy i AssociateWith nie mogą tworzyć cykli. Poniżej przedstawiono przykłady takich wykresów:
Przykład 1. Rekursywna
dlo.LoadWith<Employee>(e => e.Reports);
Przykład 2. Wskaźniki wsteczne
dlo.LoadWith <Customer>(c => C.Orders);dlo.LoadWith <Order>(o => o.Customer);
Przykład 3. Dłuższe cykle
Chociaż nie powinno się to zdarzyć w dobrze znormalizowanym modelu, możliwe jest.
dlo.LoadWith <A>(a => a.Bs);dlo.LoadWith <B>(b => b.Cs);dlo.LoadWith <C>(c => c.As);
Przykład 4. Rekursywne podzapytania
dlo.AssociateWith<A>(a=>a.As.Where(a=>a.Id=33));
Przykład 5. Dłuższe cyklicznego podzapytania
dlo.AssociateWith<A>(a=>a.Bs.Where(b=>b.Id==3));dlo.AssociateWith<B>(b=>b.As.Where(a=>a.Id==3));
Następujące reguły ogólne pomagają zrozumieć, co ma miejsce w tych scenariuszach:
LoadWith: Każde wywołanie sprawdza LoadWith , czy cykle zostały wprowadzone do grafu. Jeśli istnieją, podobnie jak w przykładach 1, 2 i 3, zgłaszany jest wyjątek.
AssociateWith: W czasie wykonywania aparat nie stosuje istniejących klauzul SubQuery do relacji wewnątrz wyrażenia.
- W przykładzie 4 klauzula
Wherejest wykonywana względem wszystkichAelementów , a nie tylko tych, które są filtrowane przez samo wyrażenie SubQuery (ponieważ byłoby to rekursywne). - W przykładzie 5 pierwsza
Whereklauzula jest stosowana do wszystkichBs, mimo że istnieją podzapytania w plikuB. DrugaWhereklauzula jest stosowana do wszystkichAs, mimo że istnieją podzapytania na .A
- W przykładzie 4 klauzula
Konstruktory
| Nazwa | Opis |
|---|---|
| DataLoadOptions() |
Inicjuje nowe wystąpienie klasy DataLoadOptions. |
Metody
| Nazwa | Opis |
|---|---|
| AssociateWith(LambdaExpression) |
Filtruje obiekty pobrane dla określonej relacji. |
| AssociateWith<T>(Expression<Func<T,Object>>) |
Filtruje obiekty pobrane dla określonej relacji. |
| Equals(Object) |
Określa, czy określony obiekt jest równy bieżącemu obiektowi. (Odziedziczone po Object) |
| GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
| GetType() |
Pobiera Type bieżącego wystąpienia. (Odziedziczone po Object) |
| LoadWith(LambdaExpression) |
Pobiera określone dane powiązane z głównym obiektem docelowym przy użyciu wyrażenia lambda. |
| LoadWith<T>(Expression<Func<T,Object>>) |
Określa, które obiekty podrzędne mają być pobierane po przesłaniu zapytania dla obiektu typu T. |
| MemberwiseClone() |
Tworzy płytkią kopię bieżącego Object. (Odziedziczone po Object) |
| ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |