DataLoadOptions Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje okamžité načítání a filtrování souvisejících dat.
public ref class DataLoadOptions sealed
public sealed class DataLoadOptions
type DataLoadOptions = class
Public NotInheritable Class DataLoadOptions
- Dědičnost
-
DataLoadOptions
Příklady
Při načítání Customers z ukázkové databáze Northwind můžete určit DataLoadOptions , že Orders se má také načíst. Můžete dokonce určit, která podmnožina Orders se má načíst.
Poznámky
Třída DataLoadOptions poskytuje okamžité načítání a filtrování souvisejících dat.
Při dotazování na objekt ve skutečnosti načtete pouze požadovaný objekt. Související objekty se automaticky nenačítají současně. Další informace viz Dotazování napříč relacemi.
Třída DataLoadOptions poskytuje dvě metody pro okamžité načtení zadaných souvisejících dat. Tato LoadWith metoda umožňuje okamžité načítání dat souvisejících s hlavním cílem. Metoda AssociateWith umožňuje filtrování souvisejících objektů.
Pravidla
Zvažte následující pravidla týkající se DataLoadOptions použití:
- Přiřazení DataLoadOptions k DataContext po spuštění prvního dotazu vygeneruje výjimku.
- Úprava DataLoadOptions po přiřazení k DataContext vygenerování výjimky.
Zpracování cyklů
LoadWith a AssociateWith direktivy nesmí vytvářet cykly. Následující příklady znázorňují tyto grafy:
Příklad 1: Self rekurzivní
dlo.LoadWith<Employee>(e => e.Reports);
Příklad 2: Back-pointers
dlo.LoadWith <Customer>(c => C.Orders);dlo.LoadWith <Order>(o => o.Customer);
Příklad 3: Delší cykly
I když by to nemělo nastat v dobře normalizovaném modelu, je to možné.
dlo.LoadWith <A>(a => a.Bs);dlo.LoadWith <B>(b => b.Cs);dlo.LoadWith <C>(c => c.As);
Příklad 4: Samoobslužné rekurzivní poddotazy
dlo.AssociateWith<A>(a=>a.As.Where(a=>a.Id=33));
Příklad 5: Delší rekurzivní poddotazy
dlo.AssociateWith<A>(a=>a.Bs.Where(b=>b.Id==3));dlo.AssociateWith<B>(b=>b.As.Where(a=>a.Id==3));
Následující obecná pravidla vám pomůžou pochopit, co se v těchto scénářích děje:
LoadWith: Každé volání, které LoadWith kontroluje, jestli byly cykly zavedeny do grafu. Pokud existují například příklady 1, 2 a 3, vyvolá se výjimka.
AssociateWith: V době běhu modul nepoužije existující klauzule SubQuery na relaci uvnitř výrazu.
- V příkladu
Where4 se klauzule provádí proti všemA, ne pouze těch, které jsou podfiltrované samotným výrazem SubQuery (protože by to bylo rekurzivní). - V příkladu 5 se první
Whereklauzule použije na všechnyBs, i když existují poddotazy .BDruháWhereklauzule se použije u všechAs, i když existují poddotazy .A
- V příkladu
Konstruktory
| Name | Description |
|---|---|
| DataLoadOptions() |
Inicializuje novou instanci DataLoadOptions třídy. |
Metody
| Name | Description |
|---|---|
| AssociateWith(LambdaExpression) |
Filtruje objekty načtené pro určitou relaci. |
| AssociateWith<T>(Expression<Func<T,Object>>) |
Filtruje objekty načtené pro určitou relaci. |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| LoadWith(LambdaExpression) |
Načte zadaná data související s hlavním cílem pomocí výrazu lambda. |
| LoadWith<T>(Expression<Func<T,Object>>) |
Určuje, které dílčí objekty se mají načíst při odeslání dotazu pro objekt typu T. |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |