pozadie
V raných dňoch .NET bol rámec System.Data dôležitou súčasťou. Poskytuje spôsob vytvárania .NET databázových ovládačov, podobne ako ActiveX Data Objects vo Visual Basic. Aj keď je API odlišné, jeho názov sa opakovane používa, odtiaľ prezývka ADO .NET.
Jedným z kľúčových rozdielov medzi ADO a ADO .NET (t. j. System.Data) je objektový model. V ADO zvyčajne stačí použiť objekty Connection, Command a Recordset, a ovládač OleDB/ODBC skrýva niečo iné. To zlepšuje opätovné použitie kódu, ale vývojárom je ťažké sprístupniť niektoré funkcie databázy.
V ADO .NET môžete tiež použiť OleDB/ODBC, ale vo väčšine prípadov použijete sériu databázovo špecifických tried. Tieto triedy sú odvodené z DBConnection, DBCommand a DBDataReader, ktoré zachovávajú znovupoužiteľnosť pôvodného kódu. Keďže sú však silne pomenované typy, musia byť explicitne súčasťou .NET knižnice.
Pravdepodobne pre zjednodušenie vývoja sú SQL Server, OleDB a ODBC ovládače všetky súčasťou frameworku System.Data. Tento prístup bol v tom čase prijateľný, no spôsoboval problémy s aktuálnym vývojovým cyklom SQL Serveru.
V skutočnosti sa cykly vydávania SQL Serveru zmenili z 3 na 5 rokov na takmer každý rok. Nové vydania často vyžadujú aktualizácie .NET ovládača, čo nie je možné, ak je viazaný na cyklus vydávania štandardu .NET.
Prvým krokom je rozdelenie knižnice System.Data. NET Core tento krok dosahuje poskytovaním samostatných knižníc pre každý ovládač databázy. Ďalším krokom je úplne oddeliť ovládač SQL Serveru od .NET Core/Standard. Na to vytvorili Microsoft.Data.SqlClient.
Upgrade na Microsoft.Data.SqlClient
Pre väčšinu vývojárov bude používanie Microsoft.Data.SqlClient veľmi jednoduché, stačí upraviť príkaz using na začiatku každej triedy. Navyše používa rovnaké názvy tried a API a poskytuje približne rovnaké funkcie.
Pre ľahké ORM ako Dapper alebo RepoDB nie sú potrebné ďalšie zmeny.
Ak vývojári používajú ORM na správu pripojení (napr. EF, NHibernate), musia počkať na aktualizácie ORM.
Problémovejšie sú tie, ktoré miešajú ORM. Ak jeden ORM používa Microsoft.Data.SqlClient a druhý System.Data.SqlClient, nebude to fungovať naraz. To je obzvlášť dôležité pri práci so zdieľanými objektmi SqlTransaction.
Použiteľnosť
Verzia 1.0 Microsoft.Data.SqlClient je dostupná pre tieto platformy:
- .NET Framework 4.6+
- .NET Core 2.1+
- .NET Standard 2.0+
Známe problémy
Nie každý potrebuje upgrade hneď. Tieto známe problémy sú uvedené v dokumentácii:
- User Data Type (UDT) nemusí fungovať s Microsoft.Data.SqlClient.
- Azure Key Vault a Microsoft.Data.SqlClient nemajú úložisko kľúčov.
- Microsoft.Data.SqlClient nepodporuje Always Encrypted pre bezpečné enklávy.
- Iba .NET Framework a .NET Core podporujú Always Encrypted, .NET Standard nie, pretože .NET Standard postráda niektoré šifrovacie závislosti.
Pôvodný odkaz:https://blog.csdn.net/weixin_39777464/article/details/111698467 |