Spazio dei nomi Microsoft.Data.SqlClient e compatibilità

Il Microsoft.Data.SqlClient namespace contiene il provider di dati .NET supportato per database compatibili con SQL Server. È nato come fork di System.Data.SqlClient e mantiene il familiare modello di programmazione ADO.NET, introducendo nuove funzionalità di SQL Server indipendentemente dal runtime .NET.

Utilizzare Microsoft.Data.SqlClient per nuovi sviluppi.

Installa e importa il namespace

Aggiungi il pacchetto NuGet:

dotnet add package Microsoft.Data.SqlClient

Importa il namespace:

using Microsoft.Data.SqlClient;

La maggior parte delle applicazioni usa SqlConnection, SqlCommand, SqlParameter, SqlDataReader, e SqlTransaction. Per la superficie pubblica completa, vedi il riferimento API Microsoft. Data.SqlClient.

Relazione con ADO.NET

Microsoft. Data.SqlClient implementa tipi indipendenti dal provider da System.Data.Common, inclusi DbConnection, DbCommand, DbDataReader, e DbTransaction. Fornisce inoltre API specifiche per SQL Server come:

  • SqlBulkCopy
  • SqlBatch
  • SqlConnectionStringBuilder
  • SqlConfigurableRetryFactory
  • SqlDependency
  • Autenticazione, crittografia e supporto dei tipi di dati specifici per SQL Server

Per indicazioni sulla scelta di API indipendenti dal provider o specifiche per SqlClient, consulta l'architettura ADO.NET con Microsoft. Data.SqlClient.

Relazione con System.Data.SqlClient

System.Data.SqlClientè il provider più vecchio che viene fornito con .NET Framework e versioni precedenti di .NET. Microsoft.Data.SqlClient Utilizza molti nomi di tipo simili, ma ha pacchetti, namespace, impostazioni predefinite, funzionalità e politiche di supporto differenti.

Non fare riferimento a entrambi i fornitori nel nuovo codice applicativo. I tipi con lo stesso nome dei due pacchetti non sono intercambiabili. Un System.Data.SqlClient.SqlConnection, per esempio, non può essere passato dove è richiesto un Microsoft.Data.SqlClient.SqlConnection.

La migrazione di solito inizia aggiungendo il Microsoft.Data.SqlClient pacchetto e cambiando i riferimenti dello spazio dei nomi, ma bisogna anche esaminare la crittografia della connessione, i parametri, la configurazione, le dipendenze transitive e il comportamento in runtime. Segui Migrate da System.Data.SqlClient a Microsoft. Data.SqlClient prima di distribuire.

Compatibilità delle versioni

La versione del pacchetto driver è indipendente dalla versione .NET dell'applicazione e dalla versione del motore di database. Controlla tutti e tre:

Component Cosa verificare
Microsoft.Data.SqlClient La linea di rilascio è supportata e contiene le funzionalità utilizzate dalla tua applicazione.
.NET o .NET Framework L'applicazione mira a un runtime supportato da quella release del driver.
Database compatibile con SQL Server La release del driver supporta la versione del database e il server supporta qualsiasi funzionalità di protocollo richiesta, come TDS 8.0.

Per le matrici attuali, vedi il ciclo di vita del supporto driver SqlClient.

Modifiche specifiche della versione

Le release dei driver possono aggiungere API, spostare dipendenze opzionali e modificare valori predefiniti sicuri. Rivedi i cambiamenti prima di ogni aggiornamento minore o maggiore.

Ecco alcuni esempi:

  • La versione 4.0 ha modificato il valore predefinito di Encrypt in true.
  • La versione 5.0 ha introdotto SqlConnectionEncryptOption e Encrypt=Strict per TDS 8.0.
  • La versione 5.2 ha introdotto SqlBatch per i target .NET moderni supportati.
  • La versione 7.0 ha spostato l'autenticazione Microsoft Entra fornita dal driver in Microsoft.Data.SqlClient.Extensions.Azure.

Scopri le novità di Microsoft. Data.SqlClient per i link alle note di rilascio e un riepilogo degli aggiornamenti.

Alcune funzionalità utilizzano tipi al di fuori del namespace principale o pacchetti opzionali.

Spazio di nomi o pacchetto Purpose
Microsoft.Data.SqlClient.Server Implementazioni SqlClient di SqlDataRecord e SqlMetaData.
Microsoft.Data.SqlTypes Tipi specifici per SqlClient come SqlFileStream, SqlJson, e SqlVector<T>.
Microsoft.Data.SqlClient.Diagnostics Payload di eventi diagnostici fortemente tipizzati.
Microsoft.Data.SqlClient.Extensions.Azure Autenticazione Microsoft Entra fornita dal driver per la versione 7.0 e successive.
Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider Integrazione con Azure Key Vault per Always Encrypted.

Non dedurre i requisiti del pacchetto solo da uno spazio di nomi. Segui l'articolo di approfondimento e le informazioni sulle dipendenze del pacchetto NuGet per la versione del driver che utilizzi.