DataLoadOptions Třída

Definice

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í:

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 Where 4 se klauzule provádí proti všem A, ne pouze těch, které jsou podfiltrované samotným výrazem SubQuery (protože by to bylo rekurzivní).
    • V příkladu 5 se první Where klauzule použije na všechny Bs, i když existují poddotazy .B Druhá Where klauzule se použije u všech As, i když existují poddotazy .A

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)

Platí pro