ADO.NET-arkitektur med Microsoft. Data.SqlClient

ADO.NET är dataåtkomstmodellen som är inbyggd i .NET. Microsoft. Data.SqlClient implementerar den modellen för SQL Server-kompatibla databaser och lägger till SQL Server-specifika funktioner.

Microsoft. Data.SqlClient-landningssidan tillhandahåller drivrutinskartan och produktionsbaslinjen. Den här artikeln förklarar hur drivrutinen passar in i ADO.NET.

ADO.NET-abstraktioner och SqlClient-typer

ADO.NET definierar leverantörsoberoende abstraktioner i System.Data.Common namnrymden. Microsoft. Data.SqlClient tillhandahåller konkreta implementationer.

ADO.NET-abstraktion SqlClient-typ Purpose
DbConnection SqlConnection Öppnar en logisk anslutning till en databas.
DbCommand SqlCommand Exekverar 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 atomär transaktion.
DbDataAdapter SqlDataAdapter Fyller och uppdaterar frånkopplade DataSet och DataTable objekt.
DbBatch SqlBatch Skickar flera kommandon som en batch på stödda målramverk.

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.

Ansluten dataåtkomst

Ansluten åtkomst håller en anslutning tillgänglig medan ett kommando körs och medan applikationen läser sina resultat.

En vanlig begäran följer denna sekvens:

  1. Skapa en SqlConnection från en anslutningssträng.
  2. Öppna anslutningen.
  3. Skapa en SqlCommand och lägg till SqlParameter värden.
  4. Kör kommandot.
  5. Bearbeta ett skalärt värde, antal påverkade rader eller SqlDataReader.
  6. 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.

Att öppna och kassera en SqlConnection för varje arbetsenhet är det vanliga mönstret. Connection pooling återanvänder den underliggande fysiska kopplingen. Håll inte en global anslutning öppen under hela applikationens livstid.

Frånkopplad dataåtkomst

SqlDataAdapteröverför data mellan SQL Server och en minnesinbyggd DataSet eller DataTable. Applikationen kan stänga anslutningen medan den läser eller ändrar minnesdata, och sedan ansluta igen för att skicka uppdateringar.

Använd frånkopplad åtkomst när du behöver:

  • Databindning till DataSet eller DataTable.
  • Relationer och begränsningar i minnet.
  • Offline-redigeringar som avstämms senare.
  • Kompatibilitet med en befintlig applikation byggd kring DataAdapters.

För nya request-orienterade tjänster börjar du med SqlCommand och SqlDataReader om du inte behöver den frånkopplade objektmodellen.

SQL Server-specifika funktioner

Microsoft. Data.SqlClient lägger till API:er och anslutningsbeteende som inte ingår i det leverantörsoberoende ADO.NET-kontraktet:

  • Microsoft Entra-autentisering och återanrop för åtkomsttoken.
  • TDS 8.0 strikt kryptering och SQL Server-certifikatalternativ.
  • Alltid krypterade och säkra enklaver.
  • SqlBulkCopy för högkapacitetsdataladdning.
  • Tabellvärdeparametrar.
  • SQL Server-datatyper, inklusive JSON och vektortyper.
  • Konfigurerbar omprövningslogik.
  • SQL Server-diagnostik, statistik och räknare.
  • Tillgänglighetsgrupp och failover-anslutningsalternativ.

Att använda dessa funktioner kopplar den koden till Microsoft. Data.SqlClient. Behåll leverantörsspecifik kod bakom en dataåtkomstgräns om resten av applikationen måste förbli leverantörsoberoende.

Objektets livslängd och samtidighet

Släng anslutningar, kommandon, läsare, transaktioner och masskopiera objekt snabbt. Använd await using med asynkron kod när en typ implementerar IAsyncDisposable.

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.

Paket och namnrymder

Installera NuGet-paketet Microsoft.Data.SqlClient och importera Microsoft.Data.SqlClient namnrymden. Drivrutinen levereras oberoende av .NET, så dess funktion, utgivnings- och supportscheman skiljer sig från .NET-runtimen.

System.Data.SqlClient är den äldre leverantören. Använd Microsoft. Data.SqlClient för ny utveckling. För en befintlig applikation, följ Migrate from System.Data.SqlClient to Microsoft. Data.SqlClient.