Table of Contents

Verschachtelte Datensätze

Verschachtelte Datensätze (NestedDataSets) können Sie bei Bedarf nachladen (Lazy-Loading) oder mit Include vorab laden (Eager-Loading). Die Beispiele verwenden die Umsätze eines Artikels.

Bei Bedarf laden

var artikel = bpApp.QueryDataSet<Artikel>()
    .First(a => a.ArtNr == "10000");

var umsaetze = artikel.Ums!.ToList();

Beim ersten Zugriff auf Ums werden die Umsätze geladen. Weitere Zugriffe auf dieselbe Navigation desselben Objekts verwenden die bereits geladenen Daten.

Vorab laden

var artikel = bpApp.QueryDataSet<Artikel>()
    .Include(a => a.Ums)
    .First(a => a.ArtNr == "10000");

var umsaetze = artikel.Ums!.ToList();

Mit Include sind die Umsätze bereits geladen, wenn die Abfrage das Ergebnis zurückgibt. COM lädt die untergeordneten Datensätze über zusätzliche Datenzugriffe.

Weitere Ebenen laden

Mit ThenInclude laden Sie untergeordnete Navigationen der zuvor ausgewählten Datensätze.

Ergebnisse projizieren

Für eine anschließende Projektion mit Select laden Sie die Ergebnisse zuerst:

var artikel = bpApp.QueryDataSet<Artikel>()
    .Where(a => a.ArtNr == "10000")
    .Include(a => a.Ums)
    .ToList();

var ergebnis = artikel.Select(a => new { a.ArtNr, Umsaetze = a.Ums });