Farbschema: Hell
Sie befinden sich hier: start » de » Dokumentation » Datenintegration und Datenzugriff » WKL Database Gateway » .NET-Client Wkl.Data.Gateway.Client – Überblick » Referenz » Programmierschnittstelle (Referenz)

Programmierschnittstelle (Referenz)

Gilt für den Client 0.2.1 mit dem Vertragspaket Wkl.Data.Gateway.Contracts 0.6.0. Die Typen des Clients liegen im Namensraum Wkl.Data.Gateway.Client, die des Vertrags in Wkl.Data.Gateway.Contracts.

Registrierung

MethodeWirkung
services.AddGatewayClient(IConfiguration section)Bindet die Konfiguration an den übergebenen Abschnitt, üblicherweise configuration.GetSection(GatewayClientOptions.SectionName)
services.AddGatewayClient(Action<GatewayClientOptions> configure)Dasselbe mit Einstellungen aus Code

Beide registrieren IGatewayClient (Implementierung GatewayHttpClient, einmal je Anwendung), die Prüfung der Einstellungen beim Start und zwei benannte HTTP-Clients für Lesen und Aufrufen mit eigenen Zeitgrenzen. Eine eigene IGatewayCorrelationSource, vor dem Aufruf registriert, ersetzt die Vorgabe. Die Vorgabe nimmt die Ablaufkennung (TraceId) der laufenden Activity im W3C-Format, bei einer Activity im älteren hierarchischen Format deren Id, ohne Activity eine neue GUID.

IGatewayClient

MethodeZweckErgebnis
ReadAsync<TRow>(GatewayQuery query, IReadOnlyDictionary<string, string>? arguments = null, CancellationToken ct = default)Liest ein Fenster aus Tabelle, Sicht oder Funktion. arguments nur bei einer Funktion: Name und Wert je Parameter als TextGatewayPage<TRow>
InvokeAsync<TRow>(GatewayRoutineRequest request, CancellationToken ct = default)Ruft eine Prozedur aufGatewayRoutineResult<TRow>

Jede Methode setzt genau eine Anfrage ab. Scheitert sie, wirft sie GatewayRequestException (siehe Fehler des Dienstes behandeln); ein Abbruch über das CancellationToken des Aufrufers kommt als OperationCanceledException.

Zeilentyp TRow. Die Zeilen werden mit System.Text.Json gelesen. Spaltennamen werden ohne Rücksicht auf Groß- und Kleinschreibung mit den snake_case-Formen der Eigenschaftsnamen verglichen (ZuletztGeaendertUtc liest zuletzt_geaendert_utc). Eine Spalte, deren Name davon abweicht, braucht [JsonPropertyName("…")] mit dem Namen, den die Datenbank führt. JsonElement als TRow liest jede Zeile unverändert.

Was gelesen wird

GatewayResource

new GatewayResource(string databaseAlias, GatewayResourceKind kind, string name)

ParameterBedeutung
databaseAliasName der Datenquelle im Dienst, nicht der Name der Datenbank
kindTable, View, Function oder Procedure
nameobjekt oder schema.objekt

GatewayQuery

new GatewayQuery(resource, select = null, filter = null, orderBy = null, skip = 0, top = null, includeTotalCount = false)

ParameterBedeutung
resourceTabelle, Sicht oder Funktion. Eine Prozedur wird abgewiesen (ArgumentException)
selectSpalten, die gelesen werden. Leer: alle, die der Dienst anbietet
filterBedingung, siehe unten
orderByFolge von GatewaySortField(string field, GatewaySortDirection direction) mit Ascending oder Descending
skipZeilen, die übersprungen werden. Nicht negativ
topGewünschte Fenstergröße, größer als null. Der Dienst begrenzt sie auf seine Obergrenze; ohne Angabe nimmt er seine Voreinstellung
includeTotalCountLässt den Dienst zusätzlich zählen, wie viele Zeilen der Filter insgesamt trifft

Filter (GatewayFilter)

ArtErzeugungBedeutung
Vergleichnew GatewayFilter.Comparison(field, op, value)op ist Equal, NotEqual, LessThan, LessThanOrEqual, GreaterThan, GreaterThanOrEqual, Contains, StartsWith oder EndsWith. Die drei Textsuchen verlangen eine Zeichenkette. value darf nicht null sein – fehlende Werte prüft die Leerwertprüfung
Feldvergleichnew GatewayFilter.FieldComparison(field, op, otherField)Vergleicht zwei Spalten derselben Zeile; nur Gleichheit und Reihenfolge
Leerwertprüfungnew GatewayFilter.NullCheck(field, expectNull)true: Spalte ist leer; false: Spalte hat einen Wert
Mengenprüfungnew GatewayFilter.Membership(field, values)Spalte gleicht einem der Werte; 1 bis 20 000 Werte (MaxValues)
Verknüpfungnew GatewayFilter.Logical(GatewayLogicalConnective.And oder Or, operands)Mindestens ein Operand
Verneinungnew GatewayFilter.Negation(operand)Kehrt die Bedingung um

Ein Filter darf höchstens zehn Ebenen tief verschachtelt sein (GatewayFilter.MaxDepth).

Werte. Übertragen werden bool, string, char, ganze Zahlen bis 64 Bit, decimal, double, float, DateTime (ohne Zeitzone), DateTimeOffset, DateOnly, TimeOnly und Guid. Jeder andere Typ – Aufzählungen, Bytefolgen, eigene Klassen – wird mit MalformedRequest abgewiesen, ohne dass eine Anfrage den Rechner verlässt. Eine Aufzählung übergeben Sie ausdrücklich als Zahl oder als Namen, je nachdem, was die Spalte speichert.

Bezeichner

Aliasnamen, Objektnamen, Spaltennamen und Parameternamen beginnen mit einem Buchstaben oder _, danach folgen Buchstaben, Ziffern, _, @, # oder $; höchstens 128 Zeichen je Teil. Ein ungültiger Name wirft ArgumentException beim Erzeugen des Objekts, ein ungültiger Argumentname beim Aufruf von ReadAsync. Der Dienst führt Namen nur mit Buchstaben, Ziffern und _ unverändert; jedes andere Zeichen kodiert er, auch @, # und $. Eine Spalte, deren Name in der Datenbank solche Zeichen enthält (etwa Wert$, Menge (kg) oder A&B), nennen Sie in select, filter und orderBy in der kodierten Form, etwa Wert_x0024_ oder A_x0026_B; die Regel steht in der Dokumentation des Datendienstes, „Zeitpunkte, Zahlen und Namen“. Die Antwort trägt den Namen, den die Datenbank führt.

Was aufgerufen wird

GatewayRoutineRequest

new GatewayRoutineRequest(GatewayResource resource, IReadOnlyDictionary<string, object?>? arguments = null)

resource muss eine Prozedur sein, sonst ArgumentException. Die Argumente reisen als JSON im Rumpf; erlaubt sind null und die Werte aus dem Abschnitt „Werte“.

Was zurückkommt

GatewayPage<TRow>

EigenschaftBedeutung
RowsDie gelesenen Zeilen
RequestedWindowSizeDie Fenstergröße, mit der der Dienst gelesen hat
TotalCountGesamtzahl der Treffer; null, wenn nicht gezählt wurde – nicht dasselbe wie 0
HasMorePotentiallytrue, wenn das Fenster voll ist; dann kann es eine Fortsetzung geben, und das nächste Fenster lesen Sie mit skip

GatewayRoutineResult<TRow>

EigenschaftBedeutung
RowsZeilen des ersten Ergebnisses der Prozedur
AffectedRowCountGeänderte Zeilen, wenn die Prozedur kein Ergebnis lieferte; sonst null
ReturnedRowstrue, wenn die Prozedur ein Ergebnis lieferte

GatewayRequestException

Trägt in Problem ein GatewayProblem mit Kind, Message, CorrelationId, EngineMessages, HttpStatusCode und IsTransient. Bedeutung und Behandlung jeder Art stehen in Fehler des Dienstes behandeln.

Verwandte Themen

de/wiki/data-conectivity/database-gateway/client/reference/api.txt · Zuletzt geändert: von Wolfgang van der Stille