ozadje
V zgodnjih dneh .NET je bil ogrodje System.Data pomemben sestavni del. Omogoča ustvarjanje gonilnikov .NET podatkovnih baz, podobno kot ActiveX podatkovni objekti v Visual Basicu. Čeprav je API drugačen, se njegovo ime ponovno uporablja, od tod vzdevek ADO .NET.
Ena ključnih razlik med ADO in ADO .NET (tj. System.Data) je objektni model. V ADO običajno uporabljaš le objekte Connection, Command in Recordset, gonilnik OleDB/ODBC pa skriva še nekaj drugega. To izboljša ponovno uporabo kode, vendar je razvijalcem težko razkriti nekatere funkcije podatkovne baze.
V ADO .NET lahko uporabljate tudi OleDB/ODBC, vendar boste v večini primerov uporabili vrsto razredov, specifičnih za bazo podatkov. Ti razredi izhajajo iz DBConnection, DBCommand in DBDataReader, ki ohranjajo ponovno uporabnost izvirne kode. Ker pa so to močno imenovani tipi, morajo biti eksplicitno del .NET knjižnice.
Verjetno za poenostavitev razvoja so SQL Server, OleDB in ODBC gonilniki vsi del ogrodja System.Data. Ta pristop je bil takrat sprejemljiv, vendar je povzročal težave s trenutnim razvojnim ciklom SQL Serverja.
Pravzaprav so se cikli izdaj SQL Serverja spremenili iz 3 do 5 let na skoraj vsako leto. Nove izdaje pogosto zahtevajo posodobitve .NET gonilnika, kar ni mogoče, če je vezan na .NET standardni cikel izidov.
Prvi korak je razdelitev knjižnice System.Data. NET Core ta korak doseže tako, da za vsak gonilnik podatkovne baze zagotovi ločene knjižnice. Naslednji korak je popolna ločitev gonilnika SQL Server od .NET Core/Standard. Za to so ustvarili Microsoft.Data.SqlClient.
Nadgradnja na Microsoft.Data.SqlClient
Za večino razvijalcev je uporaba Microsoft.Data.SqlClient zelo preprosta, saj lahko le spremenijo ukaz using na vrhu vsakega razreda. Poleg tega uporablja ista imena razredov in API-je ter ponuja približno enake funkcije.
Za lahke ORM-je, kot sta Dapper ali RepoDB, nadaljnje spremembe niso potrebne.
Če razvijalci uporabljajo ORM za upravljanje povezav (npr. EF, NHibernate), morajo počakati na nadgradnje ORM.
Bolj problematične so tiste, ki mešajo ORM-je. Če en ORM uporablja Microsoft.Data.SqlClient, drugi pa System.Data.SqlClient, ne bo delovalo hkrati. To je še posebej pomembno pri delu z deljenimi SqlTransaction objekti.
Uporabnost
Različica 1.0 Microsoft.Data.SqlClient je na voljo za te platforme:
- .NET Framework 4.6+
- .NET Core 2.1+
- .NET Standard 2.0+
Znane težave
Ne vsakdo potrebuje takojšnje nadgradnje. Te znane težave so navedene v dokumentaciji:
- Uporabniški podatkovni tip (UDT) morda ne deluje z Microsoft.Data.SqlClient.
- Azure Key Vault in Microsoft.Data.SqlClient nimata shrambe ključev.
- Microsoft.Data.SqlClient ne podpira Always Encrypted za varne enklave.
- Samo .NET Framework in .NET Core podpirata Always Encrypted, .NET Standard pa ne, ker .NET Standard nima nekaterih šifrirnih odvisnosti.
Izvirna povezava:https://blog.csdn.net/weixin_39777464/article/details/111698467 |