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.