фон
В ранните дни на .NET рамката System.Data беше важен компонент. Той предоставя начин за създаване на драйвери за .NET база данни, подобно на ActiveX Data Objects във 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 framework. Този подход беше приемлив по онова време, но създаде проблеми с текущия цикъл на разработка на 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 Стандарт 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 |