Table of Contents

Datensätze lesen und schreiben

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

Abfragen

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

Felder auswählen

var artikel = bpApp.QueryDataSet<Artikel>(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 = bpApp.QueryDataSet<Artikel>(includes: ["ArtNr", "SuchBeg"])
    .OrderBy(a => a.ArtNr)
    .Skip(100)
    .Take(50)
    .ToList();

Ergebnisse projizieren

Mit Select bestimmen Sie die Form des Ergebnisses:

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

Mit ReadDataSet lesen

ReadDataSet liest blockweise und eignet sich beispielsweise für Exporte. Die Ergebnisse sind schreibgeschützt.

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

Änderungen seit einem Zeitpunkt

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

foreach (var artikel in bpApp.QueryChanged<Artikel>(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 = bpApp.AddDataSet<Artikel>();
artikel.ArtNr = "TEST123";
artikel.SuchBeg = "Testartikel";
artikel.Save();

Ändern

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

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

Löschen

var artikel = bpApp.QueryDataSet<Artikel>()
    .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 = bpApp.QueryDataSet<Adressen>()
    .Where(a => a.Status == "Kunde")
    .OrderBy(a => a.ID)
    .Explain();

Console.WriteLine(plan);

Weitere Funktionen

Für die Suche nach IDs und Schlüsselbereichen gibt es Indexmethoden. Zusammengehörige Änderungen können Sie in einer Transaktion ausführen.

GetDataSet<T>() bietet direkten objektweisen Zugriff; nachfolgendes LINQ wird im Speicher ausgeführt. Auch hier können Sie mit includes die geladenen Felder auswählen.