Continuing the hard work to decouple Microsoft products from .Internet Main alone, Microsoft is spinning off their SQL Server drivers into a independent deployment stream. This new deal will be referred to as Microsoft.Knowledge.SqlClient and is intended to be a fall-in substitute for System.Information.SqlClient.
When .Web was established, an vital part was the Program.Data framework. This generalized the way database motorists ended up penned for .Net much in the exact way that ActiveX Data Objects did for Visual Simple. Although the API alone was really different, they reused the name which is how we obtained the ADO.Web moniker.
A essential distinction between ADO and ADO.Internet (i.e. Technique.Information) is the item product. In ADO, you usually only have to offer with the Relationship, Command, and Recordset objects. Almost everything else was concealed by the OleDB/ODBC drivers. This authorized for good code reuse, but prevented builders from exposing databases-specific options.
In ADO.Web you can use OleDB/ODBC, but most of the time you’ll as an alternative use a collection of database-specific courses. These derive from DBConnection, DBCommand, and DBDataReader so code reuse is even now feasible. But because they are exposed as strongly named styles, they need to have to be explicitly delivered as .Net libraries.
Most likely in get to simplify enhancement, the SQL Server, OleDB, and ODBC drivers were being delivered in the same library as the Program.Knowledge framework itself. This selection was satisfactory at the time, but is now producing issues with the SQL Server advancement cycle.
Effectively what’s occurring is SQL Server has gone from a 3 to 5-year release cycle to almost annually releases. And these releases generally call for updating the .Net drivers. This can not come about in a well timed vogue if it is tied to the .Internet Typical release cycle.
The initial stage was to break up the Technique.Facts library. This was carried out in .Net Core, giving us independent libraries for every single database driver. The up coming stage is to totally divorce the SQL Server driver from .Internet Core/Common. To do this, they’ve forked the library, producing Microsoft.Data.SqlClient.
Upgrading to Microsoft.Data.SqlClient
For most developers, utilizing Microsoft.Info.SqlClient will be as simple as just transforming the utilizing statements at the major of every course. It if not makes use of the same class names and APIs and roughly features the exact same attributes.
For lightweight ORMs these kinds of as Dapper or RepoDB, no even more get the job done need to be necessary.
If a developer is using an ORM that manages its have connections (e,g, EF, NHibernate), they will have to hold out right up until their ORM is upgraded. At which level, everything really should proceed to function as envisioned.
The kinds that are heading to get into issues are the ones that mix ORMs. If a person ORM is applying Microsoft.Information.SqlClient and the other Program.Data.SqlClient, they’ll no lengthier perform alongside one another. This is specially critical when sharing a SqlTransaction object.
Version 1. of Microsoft.Information.SqlClient is out there for these platforms:
- .Web Framework 4.6+
- .Internet Main 2.1+
- .Internet Standard 2.+.
Upgrading right away isn’t always for everybody. The documentation notes these recognized challenges:
- User Information Kinds (UDTs) may perhaps not function with Microsoft.Info.SqlClient.
- There is no crucial shop company for Azure Vital Vault and Microsoft.Information.SqlClient at this time.
- Usually Encrypted with safe enclaves is not supported with Microsoft.Info.SqlClient.
- Often Encrypted is only supported from .Net Framework and .Net Core targets. It is not supported towards .Web Standard due to the fact .Web Regular is missing certain encryption dependencies.