tausta
.NET:n alkuvaiheessa System.Data-kehys oli tärkeä osa. Se tarjoaa tavan luoda .NET-tietokantaajureita, samankaltaisesti kuin Visual Basicin ActiveX Data Objects. Vaikka rajapinta on erilainen, sen nimeä käytetään uudelleen, mistä tulee lempinimi ADO .NET.
Yksi keskeinen ero ADO:n ja ADO .NET:n (eli System.Data) välillä on objektimalli. ADO:ssa tarvitsee yleensä käyttää vain Connection-, Command- ja Recordset-objekteja, ja OleDB/ODBC-ajuri piilottaa jotain muuta. Tämä parantaa koodin uudelleenkäyttöä, mutta kehittäjien on vaikea tuoda esiin joitakin tietokantaominaisuuksia.
ADO .NET:ssä voit myös käyttää OleDB/ODBC:tä, mutta useimmissa tapauksissa käytät sarjaa tietokantakohtaisia luokkia. Nämä luokat johdetaan DBConnectionista, DBCommandista ja DBDataReaderista, jotka säilyttävät alkuperäisen koodin uudelleenkäytettävyyden. Mutta koska ne ovat vahvasti nimettyjä tyyppejä, niiden täytyy olla nimenomaisesti osa .NET-kirjastoa.
Luultavasti kehityksen yksinkertaistamiseksi SQL Server, OleDB ja ODBC-ajurit ovat kaikki osa System.Data -kehystä. Tämä lähestymistapa oli tuolloin hyväksyttävä, mutta aiheutti ongelmia nykyisessä SQL Serverin kehityssyklissä.
Itse asiassa SQL Serverin julkaisusyklit ovat muuttuneet 3–5 vuodesta lähes joka vuosi. Uudet julkaisut vaativat usein päivityksiä .NET-ajuriin, mikä ei ole mahdollista, jos se on sidottu .NET-standardijulkaisusykliin.
Ensimmäinen vaihe on jakaa System.Data-kirjasto. NET Core toteuttaa tämän vaiheen tarjoamalla erilliset kirjastot jokaiselle tietokanta-ajurille. Seuraava askel on erottaa SQL Server -ajuri kokonaan .NET Core/Standardista. Tätä varten he loivat Microsoft.Data.SqlClientin.
Upgrade to Microsoft.Data.SqlClient
Useimmille kehittäjille Microsoft.Data.SqlClientin käyttö on hyvin yksinkertaista, vain kun jokaisen luokan alussa olevaa useus-lausetta voi muuttaa. Lisäksi se käyttää samoja luokkanimiä ja rajapintoja ja tarjoaa suunnilleen samat ominaisuudet.
Kevyille ORM-malleille, kuten Dapperille tai RepoDB:lle, lisämuutoksia ei tarvita.
Jos kehittäjät käyttävät ORM-laitteita yhteyksien hallintaan (esim. EF, NHibernate), heidän täytyy odottaa ORM-päivityksiä.
Ongelmallisemmat ovat ne, jotka sekoittavat ORM:ia. Jos toinen ORM käyttää Microsoft.Data.SqlClientia ja toinen System.Data.SqlClientia, se ei toimi samaan aikaan. Tämä on erityisen tärkeää työskennellessä jaettujen SqlTransaction -objektien kanssa.
käytettävyys
Microsoft.Data.SqlClientin versio 1.0 on saatavilla näille alustoille:
- .NET Framework 4.6+
- .NET Core 2.1+
- .NET Standard 2.0+
Tunnetut ongelmat
Kaikkien ei tarvitse päivittää heti. Nämä tunnetut ongelmat on mainittu dokumentaatiossa:
- User Data Type (UDT) ei välttämättä toimi Microsoft.Data.SqlClientin kanssa.
- Azure Key Vaultilla ja Microsoft.Data.SqlClientilla ei ole avainvarastoa.
- Microsoft.Data.SqlClient ei tue Always Encrypted -toimintoa turvallisissa enklaveissa.
- Vain .NET Framework ja .NET Core tukevat Always Encrypted -ohjelmaa, .NET Standard ei, koska .NET Standardista puuttuu joitakin salausriippuvuuksia.
Alkuperäinen linkki:https://blog.csdn.net/weixin_39777464/article/details/111698467 |