Taust
.NET-i algusaegadel oli System.Data raamistik oluline komponent. See võimaldab luua .NET andmebaasidraivereid, sarnaselt Visual Basicu ActiveX andmeobjektidele. Kuigi API on erinev, kasutatakse selle nime uuesti, seetõttu ka hüüdnimi ADO .NET.
Üks peamine erinevus ADO ja ADO .NET (st System.Data) vahel on objektimudel. ADO-s tuleb tavaliselt kasutada ainult Connectioni, Command ja Recordset objekte ning OleDB/ODBC draiver peidab midagi muud. See parandab koodi taaskasutust, kuid arendajatel on keeruline mõningaid andmebaasi funktsioone tutvustada.
ADO .NET-is saab kasutada ka OleDB/ODBC-d, kuid enamasti kasutatakse andmebaasispetsiifilisi klasse. Need klassid on tuletatud DBConnectionist, DBCommandist ja DBDataReaderist, mis säilitavad originaalkoodi taaskasutatavuse. Kuid kuna need on tugevalt nimetatud tüübid, peavad need olema selgelt osa .NET teegist.
Tõenäoliselt arenduse lihtsustamiseks on SQL Server, OleDB ja ODBC draiverid kõik osa System.Data raamistikust. See lähenemine oli tol ajal aktsepteeritav, kuid tekitas praeguses SQL Serveri arendustsüklis probleeme.
Tegelikult on SQL Serveri väljalasketsüklid muutunud 3–5 aastast peaaegu iga aastani. Uued versioonid nõuavad sageli .NET draiveri uuendamist, mis pole võimalik, kui see on seotud .NET standardväljalasketsükliga.
Esimene samm on System.Data teegi jagamine. NET Core saavutab selle sammu, pakkudes iga andmebaasi draiveri jaoks eraldi teeke. Järgmine samm on täielikult eraldada SQL Server draiver .NET Core/Standardist. Selleks lõid nad Microsoft.Data.SqlClient.
Upgrade to Microsoft.Data.SqlClient
Enamiku arendajate jaoks on Microsoft.Data.SqlClient kasutamine väga lihtne, lihtsalt iga klassi ülaosas oleva using lause muutmine. Lisaks kasutab see samu klassinimesid ja API-sid ning pakub ligikaudu samu funktsioone.
Kergete ORM-ide, nagu Dapper või RepoDB, puhul pole täiendavaid muudatusi vaja.
Kui arendajad kasutavad ORM-e ühenduste haldamiseks (nt EF, NHibernate), peavad nad ootama ORM-i uuendusi.
Kõige keerulisemad on need, mis segavad ORM-e. Kui üks ORM kasutab Microsoft.Data.SqlClient ja teine System.Data.SqlClient, siis see ei tööta samaaegselt. See on eriti oluline, kui töötada jagatud SqlTransaction objektidega.
Kasutatavus
Microsoft.Data.SqlClient versioon 1.0 on saadaval järgmistele platvormidele:
- .NET Framework 4.6+
- .NET Core 2.1+
- .NET Standard 2.0+
Tuntud probleemid
Kõik ei pea kohe uuendama. Need teadaolevad probleemid on dokumentatsioonis märgitud:
- Kasutajaandmetüüp (UDT) ei pruugi töötada Microsoft.Data.SqlClientiga.
- Azure Key Vaultil ja Microsoft.Data.SqlClientil pole võtmehoidlat.
- Microsoft.Data.SqlClient ei toeta Always Encrypted funktsiooni turvalistes enklaavides.
- Ainult .NET Framework ja .NET Core toetavad Always Encrypted'i, .NET Standard mitte, kuna .NET Standardil puuduvad mõned krüpteerimispiirangud.
Originaallink:https://blog.csdn.net/weixin_39777464/article/details/111698467 |