fonas
Pirmosiomis .NET dienomis System.Data sistema buvo svarbus komponentas. Tai suteikia būdą kurti .NET duomenų bazės tvarkykles, panašias į "Visual Basic" "ActiveX" duomenų objektus. Nors API skiriasi, jos pavadinimas naudojamas pakartotinai, taigi ir slapyvardis ADO .NET.
Vienas iš pagrindinių skirtumų tarp ADO ir ADO .NET (ty System.Data) yra objekto modelis. ADO paprastai reikia naudoti tik ryšio, komandos ir įrašų rinkinio objektus, o OleDB/ODBC tvarkyklė slepia ką nors kita. Tai pagerina pakartotinį kodo naudojimą, tačiau kūrėjams sunku atskleisti kai kurias duomenų bazės funkcijas.
ADO .NET taip pat galite naudoti OleDB/ODBC, tačiau daugeliu atvejų naudosite duomenų bazei būdingas klases. Šios klasės yra išvestos iš DBConnection, DBCommand ir DBDataReader, kurios išlaiko originalaus kodo pakartotinį naudojimą. Bet kadangi jie yra stipriai pavadinti tipai, jie turi būti aiškiai .NET bibliotekos dalis.
Tikriausiai siekiant supaprastinti kūrimą, SQL Server, OleDB ir ODBC tvarkyklės yra System.Data sistemos dalis. Šis metodas tuo metu buvo priimtinas, tačiau jis sukėlė problemų su dabartiniu SQL serverio kūrimo ciklu.
Tiesą sakant, SQL serverio išleidimo ciklai pasikeitė nuo 3 iki 5 metų beveik kiekvienais metais. Naujiems leidimams dažnai reikia atnaujinti .NET tvarkyklę, o tai neįmanoma, jei ji susieta su .NET standartiniu leidimo ciklu.
Pirmasis žingsnis yra padalinti System.Data biblioteką. "NET Core" atlieka šį veiksmą pateikdama atskiras bibliotekas kiekvienai duomenų bazės tvarkyklei. Kitas žingsnis – visiškai atskirti SQL serverio tvarkyklę nuo .NET Core/Standard. Norėdami tai padaryti, jie sukūrė Microsoft.Data.SqlClient.
Plėtokite į Microsoft.Data.SqlClient
Daugumai kūrėjų naudoti "Microsoft.Data.SqlClient" bus labai paprasta, tereikia pakeisti kiekvienos klasės viršuje esantį teiginį. Be to, jis naudoja tuos pačius klasių pavadinimus ir API bei teikia maždaug tas pačias funkcijas.
Lengviems ORM, tokiems kaip Dapper ar RepoDB, papildomų pakeitimų nereikia.
Jei kūrėjai naudoja ORM ryšiams valdyti (pvz., EF, NHibernate), jie turi palaukti ORM atnaujinimų.
Labiau varginantys yra tie, kurie maišo ORM. Jei vienas ORM naudoja Microsoft.Data.SqlClient, o kitas naudoja System.Data.SqlClient, jis neveiks tuo pačiu metu. Tai ypač svarbu dirbant su bendrai naudojamais "SqlTransaction" objektais.
Naudojimo
Microsoft.Data.SqlClient 1.0 versija yra šioms platformoms:
- .NET Framework 4.6+
- .NET Core 2.1+
- .NET standartas 2.0+
Žinomos problemos
Ne visiems reikia atnaujinti iš karto. Šios žinomos problemos pažymėtos dokumentuose:
- Vartotojo duomenų tipas (UDT) gali neveikti su Microsoft.Data.SqlClient.
- "Azure Key Vault" ir "Microsoft.Data.SqlClient" neturi raktų saugyklos.
- "Microsoft.Data.SqlClient" nepalaiko "Always Encrypted" saugiuose anklavuose.
- Tik ".NET Framework" ir ".NET Core" palaiko "Always Encrypted", ".NET Standard" ne, nes ".NET Standard" neturi kai kurių šifravimo priklausomybių.
Originali nuoroda:https://blog.csdn.net/weixin_39777464/article/details/111698467 |