Barvna shema: Temna
Trenutno dejavna stran: start » sl » Dokumentacija » Integracija podatkov in dostop do podatkov » WKL Database Gateway » Odjemalec .NET Wkl.Data.Gateway.Client – pregled » Prvi koraki » Branje in klicanje

Branje in klicanje

V tem uvodu odjemalec vključite v aplikacijo .NET, preberete vrstice pogleda in pokličete proceduro.

Predpogoji

  • konzolna aplikacija s ciljnim ogrodjem net10.0 in paketoma Wkl.Data.Gateway.Client in Microsoft.Extensions.Hosting
  • delujoči podatkovni prehod in njegov naslov
  • vir podatkov v prehodu (v primeru fachdaten) s pogledom container_typ (stolpca id in bezeichnung) in proceduro stamm.farbe_speichern; imena zamenjajte s svojimi
  • ključ s pravilom, ki sme brati pogled in izvajati proceduro

Koraki

  1. Pripravite ključ. Ključ je v spremenljivki okolja procesa, nikoli v datoteki aplikacije:

    $env:WKL_GATEWAY_API_KEY = '<ključ>'
  2. Vnesite naslov. V appsettings.json aplikacije:

    { "GatewayClient": { "BaseAddress": "https://daten.example.com/" } }

    Vse nastavitve so v Konfiguraciji.

  3. Registrirajte, berite, kličite. Program.cs:

    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Hosting;
    using Wkl.Data.Gateway.Client;
    using Wkl.Data.Gateway.Contracts;
     
    var builder = Host.CreateApplicationBuilder(args);
    builder.Services.AddGatewayClient(builder.Configuration.GetSection(GatewayClientOptions.SectionName));
    using var host = builder.Build();
     
    // Starting the host validates the settings; a missing BaseAddress stops the application here
    await host.StartAsync();
     
    var client = host.Services.GetRequiredService<IGatewayClient>();
     
    // Read at most 100 rows whose description contains "DV", sorted by id, with the total count
    var page = await client.ReadAsync<ContainerTyp>(new GatewayQuery(
        new GatewayResource("fachdaten", GatewayResourceKind.View, "container_typ"),
        select: ["id", "bezeichnung"],
        filter: new GatewayFilter.Comparison("bezeichnung", GatewayComparisonOperator.Contains, "DV"),
        orderBy: [new GatewaySortField("id", GatewaySortDirection.Ascending)],
        top: 100,
        includeTotalCount: true));
     
    foreach (var row in page.Rows)
    {
        Console.WriteLine($"{row.Id}: {row.Bezeichnung}");
    }
     
    Console.WriteLine($"{page.Rows.Count} of {page.TotalCount} rows");
     
    // Call the procedure with two arguments; null is sent as SQL NULL
    var result = await client.InvokeAsync<SpeicherErgebnis>(new GatewayRoutineRequest(
        new GatewayResource("fachdaten", GatewayResourceKind.Procedure, "stamm.farbe_speichern"),
        new Dictionary<string, object?> { ["ral_nummer"] = "RAL 5010", ["name_en"] = null }));
     
    Console.WriteLine(result.ReturnedRows && result.Rows.Count > 0
        ? $"Saved as {result.Rows[0].Id}"
        : $"{result.AffectedRowCount} rows changed");
     
    public sealed class ContainerTyp
    {
        public int Id { get; init; }
     
        public string Bezeichnung { get; init; } = string.Empty;
    }
     
    public sealed class SpeicherErgebnis
    {
        public int Id { get; init; }
    }

    Imena stolpcev v obliki snake_case se preslikajo na običajna imena lastnosti: ZadnjaSprememba bere zadnja_sprememba (primerjava ne loči velikih in malih črk). Atribut za vsako lastnost za to ni potreben – pri nekaj sto stolpcih bi bil predvsem vir tipkarskih napak. Preslikava pa zajame samo stolpce, ki so sami poimenovani v obliki snake_case. Stolpec, kot je SpremenjenoDne ali A&B, potrebuje lastnost z [JsonPropertyName("…")] in natanko tem imenom; brez nje lastnost tiho ostane na privzeti vrednosti, brez napake. V select, filter in orderBy stolpec z znaki zunaj črk, števk in _ navedite v kodirani obliki prehoda, na primer A_x0026_B za A&B (glejte Programski vmesnik). Če potrebujete vrstice nespremenjene, berite v JsonElement.

Rezultat

Aplikacija izpiše prebrane vrstice in nato, koliko vrstic filter zadene skupaj (page.TotalCount je nastavljen samo zato, ker je nastavljen includeTotalCount). Če procedura vrne vrstico, zadnja vrstica izpisa pokaže njen id, sicer število spremenjenih vrstic.

Naslednji koraki

sl/wiki/data-conectivity/database-gateway/client/getting-started/read-and-call.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille