Table of Contents

Datensätze lesen und schreiben

QueryDataSet<T>() übersetzt LINQ-Abfragen in GraphQL. Die geladenen Datensätze können Sie mit Save() speichern und mit Remove() löschen.

Abfragen

var artikel = qlApp.QueryDataSet<Products>()
    .Where(a => a.ArtNr == "10000")
    .FirstOrDefault();

Felder auswählen

var artikel = qlApp.QueryDataSet<Products>(includes: ["ArtNr", "SuchBeg"])
    .Where(a => a.ArtNr == "10000")
    .FirstOrDefault();

Mit includes begrenzen Sie die geladenen Felder. Nicht geladene Felder behalten ihren Standardwert. Berücksichtigen Sie auch Felder, die Sie anschließend für Berechnungen oder lokale Filter verwenden.

Die Feldauswahl steht ebenso bei ReadDataSet, QueryChanged und ReadChanged zur Verfügung.

Ergebnisse begrenzen

var artikel = qlApp.QueryDataSet<Products>(includes: ["ArtNr", "SuchBeg"])
    .OrderBy(a => a.ArtNr)
    .Skip(100)
    .Take(50)
    .ToList();

Ergebnisse projizieren

Mit Select bestimmen Sie die Form des Ergebnisses:

var artikel = qlApp.QueryDataSet<Products>()
    .Where(a => a.ArtNr == "10000")
    .Select(a => new { a.ArtNr, a.SuchBeg })
    .ToList();

Mit ReadDataSet lesen

ReadDataSet verwendet denselben Abfragezugriff wie QueryDataSet. Die Ergebnisse bleiben änderbar.

foreach (var artikel in qlApp.ReadDataSet<Products>(includes: ["ArtNr", "SuchBeg"]))
{
    Console.WriteLine($"{artikel.ArtNr}: {artikel.SuchBeg}");
}

Änderungen seit einem Zeitpunkt

var seit = DateTime.Now.AddDays(-7);

foreach (var artikel in qlApp.QueryChanged<Products>(seit))
{
    Console.WriteLine(artikel.ArtNr);
}

QueryChanged liefert Datensätze, deren Änderungsdatum nach dem angegebenen Zeitpunkt liegt. ReadChanged ist die entsprechende Variante mit dem Leseverhalten von ReadDataSet.

Anlegen

var artikel = qlApp.AddDataSet<Products>();
artikel.ArtNr = "TEST123";
artikel.SuchBeg = "Testartikel";
artikel.Save();

Ändern

var artikel = qlApp.QueryDataSet<Products>()
    .First(a => a.ArtNr == "TEST123");

artikel.SuchBeg = "Neue Bezeichnung";
artikel.Save();

Löschen

var artikel = qlApp.QueryDataSet<Products>()
    .First(a => a.ArtNr == "TEST123");

artikel.Remove();

Untergeordnete Datensätze laden

Untergeordnete Datensätze wie die Umsätze eines Artikels können Sie beim Zugriff nachladen oder mit Include vorab laden. Beides ist unter Verschachtelte Datensätze beschrieben.

Abfrageplan prüfen

Explain() liefert einen QueryPlan mit dem gewählten Index, dem Filter und den im Speicher ausgewerteten Bedingungen.

var plan = qlApp.QueryDataSet<Addresses>()
    .Where(a => a.Status == "Kunde")
    .OrderBy(a => a.ID)
    .Explain();

Console.WriteLine(plan);

Weitere Funktionen

Save() ohne Änderungen sendet keine Mutation. Optionen für bedingtes Anlegen, Schreibsperren und Konsistenzprüfungen stehen unter Abfrage- und Schreiboptionen.