háttér
A .NET korai napjaiban a System.Data keretrendszer fontos komponens volt. Lehetőséget ad .NET adatbázis-illezőprogramok létrehozására, hasonlóan a Visual Basic ActiveX Data Objects-hez. Bár az API eltérő, a nevét újrahasznosítják, innen ered az ADO .NET becenév.
Az ADO és az ADO .NET (azaz System.Data) egyik kulcsfontosságú különbsége az objektummodell. ADO-ban általában csak a Connection, Command és Recordset objektumokat kell használni, és az OleDB/ODBC illesztőgép valami mást rejt el. Ez javítja a kód újrahasznosítását, de a fejlesztők számára nehéz néhány adatbázis-funkciót kitárni.
Az ADO .NET-ben használhatod az OleDB/ODBC-t is, de a legtöbb esetben adatbázis-specifikus osztályokat is használsz. Ezek az osztályok a DBConnection, DBCommand és DBDataReader programokból származnak, amelyek fenntartják az eredeti kód újrahasználhatóságát. De mivel erősen elnevezett típusok, kifejezetten a .NET könyvtár részének kell lenniük.
Valószínűleg a fejlesztés egyszerűsítése érdekében az SQL Server, az OleDB és az ODBC illezőprogramok mind a System.Data keretrendszer részei. Ez a megközelítés akkoriban elfogadható volt, de problémákat okozott a jelenlegi SQL Server fejlesztési ciklusban.
Valójában az SQL Server kiadási ciklusai 3 és 5 évről szinte minden évre változtak. Az új kiadásokhoz gyakran szükség van a .NET illesztőprogram frissítésére, ami nem lehetséges, ha az a .NET szabványos kiadási ciklusához van kötve.
Az első lépés a System.Data könyvtár szétválasztása. A NET Core ezt a lépést úgy éri el, hogy minden adatbázis-meghajtóhoz külön könyvtárakat biztosít. A következő lépés, hogy teljesen szétválasszuk az SQL Server illesztőprogramot a .NET Core/Standard rendszertől. Ehhez létrehozták a Microsoft.Data.SqlClient-et.
Upgrade to Microsoft.Data.SqlClient
A legtöbb fejlesztő számára a Microsoft.Data.SqlClient használata nagyon egyszerű lesz, csak módosítani kell az egyes osztályok tetején lévő using utasítást. Ráadásul ugyanazokat az osztályneveket és API-kat használja, és nagyjából ugyanazokat a funkciókat kínálja.
Könnyű ORM-eknél, mint a Dapper vagy RepoDB, további módosításokra nem van szükség.
Ha a fejlesztők ORM-eket használnak a kapcsolatok kezelésére (pl. EF, NHibernate), akkor várniuk kell az ORM fejlesztésekre.
A legnehezebbek azok, amelyek keverik az ORM-eket. Ha az egyik ORM a Microsoft.Data.SqlClient-et használja, a másik pedig System.Data.SqlClient-t, akkor nem fog egyszerre működni. Ez különösen fontos, ha megosztott SQL Transaction objektumokkal dolgozik.
Használhatóság
A Microsoft.Data.SqlClient 1.0-s verziója elérhető az alábbi platformokra:
- .NET Framework 4.6+
- .NET Core 2.1+
- .NET Standard 2.0+
Ismert problémák
Nem mindenkinek kell azonnal frissítenie. Ezeket az ismert problémákat a dokumentációban említik:
- A User Data Type (UDT) nem feltétlenül működik a Microsoft.Data.SqlClient-szel.
- Az Azure Key Vault és a Microsoft.Data.SqlClient nem rendelkezik kulcstárolóval.
- A Microsoft.Data.SqlClient nem támogatja a Always Encrypted (Always Encrypted) funkciót biztonságos enklávék esetén.
- Csak a .NET Framework és a .NET Core támogatja a Always Encrypted-et, míg a .NET Standard nem, mert a .NET Standard hiányzik bizonyos titkosítási függőségek.
Eredeti link:https://blog.csdn.net/weixin_39777464/article/details/111698467 |