Uporaba gonilnika z ADO.NET in Visual Studiem
Programi .NET prek gonilnika s System.Data.Odbc dosežejo storitev OData – branje,
DataAdapter.Fill, CommandBuilder, parametri –, čarovniki Visual Studia pa z njim delajo kot z
virom podatkov SQL Server. O tem, ali pisanje uspe, odločajo tri nastavitve.
Pregled rešitve
ADO.NET in čarovnik TableAdapter ustvarita UPDATE in DELETE po pravilih CommandBuilder.
Privzeta nastavitev (ConflictOption.CompareAllSearchableValues, v čarovniku „Use optimistic
concurrency“) vsak stolpec primerja z njegovo staro vrednostjo. Tega ni mogoče izraziti v OData: z
naslovom za lastne stavke se stavek nespremenjen pošlje podatkovni zbirki, brez njega pa ga gonilnik zavrne,
preden je karkoli zapisano.
Izvedba
Povežite se kot običajno; ali je proces 32- ali 64-bitni, določa, kateri gonilnik se naloži (Visual Studio od različice 2022 je 64-bitni):
using var connection = new OdbcConnection( "DRIVER={Wkl OData};URL=https://daten.example.com/odata/v4/fachdaten/dbo/;AUTH=WINDOWS"); connection.Open();
Izberite pravilo sočasnosti:
Primer Nastavitev naslov za lastne stavke obstaja privzeta nastavitev zadošča; primerjave vrednosti preveri podatkovna zbirka brez naslova, tabela z različico vrstice ali žigom vrstice ( gw_rowstamp)ConflictOption.CompareRowVersion, stolpec vključite v poizvedbo; v čarovniku odznačite „Use optimistic concurrency“brez naslova, konflikti niso pomembni ConflictOption.OverwriteChanges- Za imena s posebnimi znaki pri
OdbcCommandBuildernastaviteQuotePrefix = "["inQuoteSuffix = "]"; brez njijuCommandBuilderimena zapiše brez oklepajev, pri vsakem gonilniku.
Rezultat: ustvarjanje, spreminjanje in brisanje prek CommandBuilder uspejo; sprememba, ki jo
je medtem naredil nekdo drug, se pojavi kot DBConcurrencyException. To velja v .NET 10, .NET 8 in .NET Framework 4.8, v 32- in
64-bitnih procesih.
Napotki
- Transakcije samo, kjer jih storitev podpira. S podatkovnim prehodom Wkl.Data.Gateway
BeginTransaction,CommitinRollbackdelujejo kot prek gonilnika SQL Serverja; druga storitev brezStore.TransactionsnaBeginTransactionodgovori sHYC00namesto z navidezno odprto transakcijo. Glejte Transakcije. DateTimesamo na milisekundo. ADO.NET vezano vrednostDateTimeprenese natančno samo na milisekundo; gonilnik shrani vrednost, kot prispe. Gonilnik SQL Serverja v tej vezavi zavrne vsak finejši delček sekunde.- Pogledi se pojavijo kot tabele.
$metadatapogledov ne razlikuje od tabel; Server Explorer jih prikaže pod „Tables“. Na branje in poizvedbe to ne vpliva.
Sorodne teme
- Nastavitev prepustnih poizvedb – naslov za lastne stavke