Microsoft. Data.SqlClient-namnrymd och kompatibilitet

Namnrymden Microsoft.Data.SqlClient innehåller den stödda .NET-dataleverantören för SQL Server-kompatibla databaser. Det började som en förgrening av System.Data.SqlClient och behåller den välkända ADONET-programmeringsmodellen samtidigt som nya SQL Server-funktioner levereras oberoende av .NET-runtime.

Använd Microsoft.Data.SqlClient för ny utveckling.

Installera och importera namnrymden

Lägg till NuGet-paketet:

dotnet add package Microsoft.Data.SqlClient

Importera namnrymden:

using Microsoft.Data.SqlClient;

De flesta applikationer använder SqlConnection, SqlCommand, SqlParameter, SqlDataReader, och SqlTransaction. För hela den offentliga ytan, se Microsoft. Data.SqlClient API-referensen.

Förhållande till ADO.NET

ADO.NET är dataåtkomstmodellen som är inbyggd i .NET. Den definierar leverantörsoberoende abstraktioner i namnrymden System.Data.Common, och Microsoft.Data.SqlClient levererar de konkreta implementationerna.

ADO.NET-abstraktion SqlClient-typ Purpose
DbConnection SqlConnection Öppnar en logisk anslutning till en databas.
DbCommand SqlCommand Exekverar Transact-SQL (T-SQL) text eller en lagrad procedur.
DbParameter SqlParameter Skickar ett skrivet värde separat från kommandotexten.
DbDataReader SqlDataReader Strömmar resultatrader från servern.
DbTransaction SqlTransaction Grupperar kommandon i en transaktion som bekräftas eller rullas tillbaka som en enhet.
DbDataAdapter SqlDataAdapter Fyller och uppdaterar frånkopplade DataSet och DataTable objekt.
DbBatch SqlBatch Skickar flera kommandon som en batch på stödda målramverk.

Microsoft. Data.SqlClient tillhandahåller också SQL Server-specifika API:er såsom:

  • SqlBulkCopy
  • SqlConnectionStringBuilder
  • SqlConfigurableRetryFactory
  • SqlDependency
  • SQL Server-specifik autentisering, kryptering och stöd för datatyper

Programmera mot ADO.NET-abstraktionerna när ett bibliotek måste stödja flera databasleverantörer. Använd SqlClient-typerna när en applikation riktar sig mot SQL Server och behöver leverantörsspecifika funktioner, såsom Microsoft Entra-autentisering, Always Encrypted, bulkkopiering, tabellvärdesparametrar eller konfigurerbar återförsökslogik. Behåll leverantörsspecifik kod bakom en dataåtkomstgräns om resten av applikationen måste förbli leverantörsoberoende.

Ansluten och frånkopplad åtkomst

Uppkopplad åtkomst håller en anslutning öppen medan ett kommando körs och medan applikationen läser sina resultat. En typisk förfrågan följer denna sekvens:

  1. Skapa en SqlConnection från en reťazec pripojenia och öppna den.
  2. Skapa en SqlCommand och lägg till SqlParameter värden.
  3. Kör kommandot.
  4. Bearbeta ett skalärt värde, en påverkad radräkning eller en SqlDataReader.
  5. Gör dig av med läsaren, kommandot och kontakten.

Använd ansluten åtkomst för de flesta webb-API:er, tjänster, arbetare och kommandoradsapplikationer. SqlDataReader strömmar rader och använder vanligtvis mindre minne än att ladda hela resultatet i en DataSet.

Med Disconnected access används SqlDataAdapter för att kopiera data till ett objekt DataSet eller DataTable i minnet. Applikationen kan stänga anslutningen medan den läser eller ändrar minnesdata, och sedan ansluta igen för att skicka uppdateringar. Använd det för databindning, relationer i minnet och begränsningar, offline-redigeringar som du stämmer av senare, eller en befintlig applikation byggd kring DataAdapters. För nya begärandebaserade tjänster, börja med SqlCommand och SqlDataReader.

Objektets livslängd och samtidighet

Öppna och frigör en SqlConnection för varje arbetsenhet. Anslutningspooling återanvänder den underliggande fysiska anslutningen, så håll inte en global anslutning öppen under hela applikationens livstid. Släng anslutningar, kommandon, läsare, transaktioner och masskopiera objekt snabbt. I asynkron kod, använd await using för typer som implementerar IAsyncDisposable på målramverket, såsom SqlConnection och SqlDataReader på .NET, och vanligt using för typer som endast implementerar IDisposable, såsom SqlBulkCopy.

SqlConnection, SqlCommand, SqlDataReader, och SqlTransaction stöder inte samtidig användning från flera trådar. Ge varje samtidig operation en egen anslutning och förlita dig på anslutningspoolning. Multiple Active Result Sets (MARS) tillåter mer än en aktiv resultatuppsättning på en anslutning, men gör inte SqlClient-objekt trådsäkra.

Förhållandet till System.Data.SqlClient

System.Data.SqlClientär den äldre leverantören som levereras med .NET Framework och tidigare .NET-versioner. Microsoft.Data.SqlClient använder många av samma typnamn, men har olika paket, namnrymder, standardinställningar, funktioner och supportpolicys.

Referera inte till båda leverantörerna i den nya applikationskoden. Typer med samma namn från de två paketen är inte utbytbara. En System.Data.SqlClient.SqlConnection kan till exempel inte skickas vidare när ett Microsoft.Data.SqlClient.SqlConnection krävs.

Migreringen börjar vanligtvis med att lägga till paketet Microsoft.Data.SqlClient och ändra namnrymdsreferenser, men du måste också granska anslutningskryptering, parametrar, konfiguration, transitiva beroenden och körtidsbeteende. Följ Migrera från System.Data.SqlClient till Microsoft.Data.SqlClient innan du distribuerar.

Versionskompatibilitet

Drivrutinspaketversionen är oberoende av applikationens .NET-version och databasmotorversionen. Kolla alla tre:

Component Vad du ska verifiera
Microsoft.Data.SqlClient Release-linjen stöds och innehåller de funktioner som din applikation använder.
.NET- eller .NET-ramverket Applikationen riktar sig mot en körtid som stöds av den drivrutinsreleasen.
SQL Server-kompatibel databas Drivrutinsversionen stöder databasversionen och servern stöder alla önskade protokollfunktioner, såsom TDS 8.0.

För nuvarande matriser, se SqlClient-drivrutinsstödets livscykel.

Versionsspecifika ändringar

Drivrutinssläpp kan lägga till API:er, flytta valfria beroenden och ändra säkra standardinställningar. Gå igenom ändringar innan varje mindre eller större uppdatering.

Exempel inkluderar:

  • Version 4.0 ändrades Encrypt till standard till true.
  • Version 5.0 introducerade SqlConnectionEncryptOption och Encrypt=Strict för TDS 8.0.
  • Version 5.2 introducerade SqlBatch på moderna .NET-målplattformar som stöds.
  • Version 7.0 flyttade drivrutinstillhandahållen Microsoft Entra-autentisering till Microsoft.Data.SqlClient.Extensions.Azure.

Se vad som är nytt i Microsoft. Data.SqlClient för länkar till releaseanteckningar och en uppdateringssammanfattning.

Vissa funktioner använder typer utanför huvudnamnrymden eller valfria paket.

Namnrymd eller paket Purpose
Microsoft.Data.SqlClient.Server SQLClient-implementationer av SqlDataRecord och SqlMetaData.
Microsoft.Data.SqlTypes SQLClient-specifika typer såsom SqlFileStream, SqlJson, och SqlVector<T>.
Microsoft.Data.SqlClient.Diagnostics Starkt typade nyttolaster för diagnostikhändelser.
Microsoft.Data.SqlClient.Extensions.Azure Drivrutinsbaserad Microsoft Entra-autentisering för version 7.0 och senare.
Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider Azure Key Vault-integration för Always Encrypted.

Dra inte slutsatser om paketkrav enbart från ett namnrymd. Följ artikeln om funktionen och informationen om NuGet-paketberoenden för den drivrutinsversion du använder.