тло
У перші роки .NET фреймворк System.Data був важливим компонентом. Він забезпечує спосіб створення драйверів .NET баз даних, подібно до об'єктів даних ActiveX у Visual Basic. Хоча API відрізняється, його назва використовується повторно, звідси й прізвисько ADO .NET.
Однією з ключових відмінностей між ADO та ADO .NET (тобто System.Data) є об'єктна модель. В ADO зазвичай потрібно використовувати лише об'єкти Connection, Command і Recordset, а драйвер OleDB/ODBC приховує щось інше. Це покращує повторне використання коду, але розробникам важко розкрити деякі функції бази даних.
У ADO .NET ви також можете використовувати OleDB/ODBC, але в більшості випадків застосовуєте серію класів, специфічних для бази даних. Ці класи походять від DBConnection, DBCommand і DBDataReader, які зберігають повторне використання оригінального коду. Але оскільки це типи з чіткими назвами, вони мають бути явно частиною бібліотеки .NET.
Ймовірно, для спрощення розробки SQL Server, OleDB і драйвери ODBC є частиною фреймворку System.Data. Такий підхід був прийнятним на той час, але створював проблеми з поточним циклом розробки SQL Server.
Насправді цикли випуску SQL Server змінювалися з 3–5 років майже щороку. Нові релізи часто потребують оновлень драйвера .NET, що неможливо, якщо він прив'язаний до стандартного циклу випуску .NET.
Перший крок — розділити бібліотеку System.Data. NET Core виконує цей крок, надаючи окремі бібліотеки для кожного драйвера бази даних. Наступний крок — повністю відокремити драйвер SQL Server від .NET Core/Standard. Для цього вони створили Microsoft.Data.SqlClient.
Оновлення до Microsoft.Data.SqlClient
Для більшості розробників використання Microsoft.Data.SqlClient буде дуже простим — просто змінювати оператор using на початку кожного класу. До того ж, він використовує ті ж назви класів і API і надає приблизно ті ж функції.
Для легких ORM, таких як Dapper або RepoDB, подальші зміни не потрібні.
Якщо розробники використовують ORM для керування з'єднаннями (наприклад, EF, NHibernate), їм потрібно чекати оновлень ORM.
Більш проблемні — це ті, що змішують ORM. Якщо один ORM використовує Microsoft.Data.SqlClient, а інший — System.Data.SqlClient, це не працюватиме одночасно. Це особливо важливо при роботі з спільними об'єктами SqlTransaction.
Юзабіліті
Версія 1.0 Microsoft.Data.SqlClient доступна для таких платформ:
- .NET Framework 4.6+
- .NET Core 2.1+
- .NET Standard 2.0+
Відомі проблеми
Не всім потрібно оновлюватися одразу. Ці відомі проблеми зазначені в документації:
- Тип користувацьких даних (UDT) може не працювати з Microsoft.Data.SqlClient.
- Azure Key Vault і Microsoft.Data.SqlClient не мають сховища ключів.
- Microsoft.Data.SqlClient не підтримує Always Encrypted для захищених енклавів.
- Лише .NET Framework і .NET Core підтримують Always Encrypted, .NET Standard — ні, оскільки .NET Standard не має деяких залежностей шифрування.
Оригінальне посилання:https://blog.csdn.net/weixin_39777464/article/details/111698467 |