Barvna shema: Temna
Trenutno dejavna stran: start » de » Dokumentation » Datenintegration und Datenzugriff » WKL OData-ODBC-Treiber » Anleitungen zum OData-ODBC-Treiber » So verwenden Sie den Treiber mit ADO.NET und Visual Studio

So verwenden Sie den Treiber mit ADO.NET und Visual Studio

.NET-Programme erreichen einen OData-Dienst über den Treiber mit System.Data.Odbc – lesen, DataAdapter.Fill, CommandBuilder, Parameter –, und die Assistenten von Visual Studio arbeiten damit wie mit einer SQL-Server-Datenquelle. Drei Einstellungen entscheiden, ob Schreiben gelingt.

Lösungsübersicht

ADO.NET und der TableAdapter-Assistent erzeugen UPDATE und DELETE nach den Regeln des CommandBuilder. Die Vorgabe (ConflictOption.CompareAllSearchableValues, im Assistenten „Optimistische Parallelität verwenden“) vergleicht jede Spalte mit ihrem alten Wert. Das lässt sich nicht in OData ausdrücken: Mit einer Adresse für eigene Anweisungen geht die Anweisung unverändert an die Datenbank, ohne sie weist der Treiber sie ab, bevor etwas geschrieben ist.

Umsetzung

  1. Verbinden Sie wie gewohnt; die Bitbreite des Prozesses bestimmt den Treiber (Visual Studio ab 2022 ist 64 Bit):

    using var connection = new OdbcConnection(
        "DRIVER={Wkl OData};URL=https://daten.example.com/odata/v4/fachdaten/dbo/;AUTH=WINDOWS");
    connection.Open();
  2. Wählen Sie die Nebenläufigkeitsregel:

    LageEinstellung
    Adresse für eigene Anweisungen vorhandenVorgabe genügt; die Wertvergleiche prüft die Datenbank
    ohne Adresse, Tabelle mit Zeilenversion oder Zeilenstempel (gw_rowstamp)ConflictOption.CompareRowVersion, die Spalte in die Abfrage aufnehmen; im Assistenten „Optimistische Parallelität“ abwählen
    ohne Adresse, Konflikte unwichtigConflictOption.OverwriteChanges
  3. Setzen Sie für Namen mit Sonderzeichen QuotePrefix = "[" und QuoteSuffix = "]" am OdbcCommandBuilder; ohne sie schreibt er die Namen ungeschützt, bei jedem Treiber.

Ergebnis: Anlegen, Ändern und Löschen über den CommandBuilder gelingen; eine fremde Änderung erscheint als DBConcurrencyException. Das gilt unter .NET 10, .NET 8 und .NET Framework 4.8, je in 32- und 64-Bit-Prozessen.

Hinweise

  • Transaktionen nur, wo der Dienst sie anbietet. Mit dem Datendienst Wkl.Data.Gateway wirken BeginTransaction, Commit und Rollback wie über den Treiber von SQL Server; ein anderer Dienst ohne Store.Transactions antwortet auf BeginTransaction mit HYC00 statt einer scheinbar geöffneten Transaktion. Siehe Transaktionen.
  • DateTime nur auf die Millisekunde. ADO.NET überträgt einen gebundenen DateTime nur auf die Millisekunde; der Treiber speichert, was ankommt. Der Treiber von SQL Server weist jeden Bruchteil in dieser Bindung ab.
  • Sichten erscheinen als Tabellen. $metadata unterscheidet Sichten nicht von Tabellen; der Server-Explorer zeigt sie unter „Tabellen“. Lesen und Abfragen betrifft das nicht.

Verwandte Themen

de/wiki/data-conectivity/odata-odbc/how-to/adonet-and-visual-studio.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille