pozadí
V počátcích .NET byl framework System.Data důležitou součástí. Umožňuje vytvářet .NET databázové ovladače podobně jako ActiveX Data Objects ve Visual Basicu. Ačkoliv je API odlišné, jeho název je znovu použit, odtud přezdívka ADO .NET.
Jedním z klíčových rozdílů mezi ADO a ADO .NET (tj. System.Data) je objektový model. V ADO obvykle stačí použít objekty Connection, Command a Recordset, a ovladač OleDB/ODBC skrývá něco jiného. To zlepšuje opětovné použití kódu, ale je pro vývojáře obtížné některé databázové funkce zpřístupnit.
V ADO .NET můžete také použít OleDB/ODBC, ale ve většině případů budete používat řadu databázově specifických tříd. Tyto třídy jsou odvozeny z DBConnection, DBCommand a DBDataReader, které zachovávají znovupoužitelnost původního kódu. Ale protože jsou to silně pojmenované typy, musí být explicitně součástí .NET knihovny.
Pravděpodobně pro zjednodušení vývoje jsou SQL Server, OleDB a ODBC ovladače všechny součástí frameworku System.Data. Tento přístup byl tehdy přijatelný, ale způsoboval problémy současnému vývojovému cyklu SQL Serveru.
Ve skutečnosti se cykly vydávání SQL Serveru změnily z 3 na 5 let téměř každý rok. Nové verze často vyžadují aktualizace ovladače .NET, což není možné, pokud je vázána na cyklus vydávání standardu .NET.
Prvním krokem je rozdělení knihovny System.Data. NET Core tento krok dosahuje tím, že poskytuje samostatné knihovny pro každý ovladač databáze. Dalším krokem je úplné oddělení ovladače SQL Server od .NET Core/Standard. K tomu vytvořili Microsoft.Data.SqlClient.
Upgrade na Microsoft.Data.SqlClient
Pro většinu vývojářů bude používání Microsoft.Data.SqlClient velmi jednoduché, stačí upravit příkaz using na začátku každé třídy. Navíc používá stejné názvy tříd a API a nabízí přibližně stejné funkce.
U lehkých ORM jako Dapper nebo RepoDB nejsou potřeba žádné další změny.
Pokud vývojáři používají ORM ke správě připojení (např. EF, NHibernate), musí počkat na upgrady ORM.
Nejproblematičtější jsou ty, které míchají ORM. Pokud jeden ORM používá Microsoft.Data.SqlClient a druhý System.Data.SqlClient, nebude to fungovat současně. To je obzvlášť důležité při práci se sdílenými objekty SqlTransaction.
použitelnost
Verze 1.0 Microsoft.Data.SqlClient je dostupná pro tyto platformy:
- .NET Framework 4.6+
- .NET Core 2.1+
- .NET Standard 2.0+
Známé problémy
Ne každý musí hned upgradovat. Tyto známé problémy jsou uvedeny v dokumentaci:
- User Data Type (UDT) nemusí fungovat s Microsoft.Data.SqlClient.
- Azure Key Vault a Microsoft.Data.SqlClient nemají úložiště klíčů.
- Microsoft.Data.SqlClient nepodporuje Always Encrypted pro zabezpečené enklávy.
- Pouze .NET Framework a .NET Core podporují Always Encrypted, .NET Standard nikoliv, protože .NET Standard postrádá některé šifrovací závislosti.
Původní odkaz:https://blog.csdn.net/weixin_39777464/article/details/111698467 |