Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
ADO.NET è il modello di accesso ai dati integrato in .NET. Microsoft. Data.SqlClient implementa questo modello per database compatibili con SQL Server e aggiunge funzionalità specifiche per SQL Server.
La pagina di destinazione di Microsoft. Data.SqlClient fornisce la mappa delle caratteristiche del driver e la linea di produzione di base. Questo articolo spiega come il driver si inserisce in ADO.NET.
Astrazioni ADO.NET e tipi SqlClient
ADO.NET definisce astrazioni indipendenti dal provider nello System.Data.Common spazio dei nomi. Microsoft. Data.SqlClient fornisce implementazioni concrete.
| astrazione ADO.NET | Tipo SqlClient | Purpose |
|---|---|---|
| DbConnection | SqlConnection | Apre una connessione logica a un database. |
| DbCommand | SqlCommand | Esegue testo SQL o una procedura memorizzata. |
| DbParameter | SqlParameter | Invia un valore digitato separatamente dal testo del comando. |
| DbDataReader | SqlDataReader | Trasmette in streaming le righe dei risultati dal server. |
| DbTransaction | SqlTransaction | Raggruppa i comandi in un'unica transazione atomica. |
| DbDataAdapter | SqlDataAdapter | Compila e aggiorna gli oggetti disconnessi DataSet e DataTable. |
| DbBatch | SqlBatch | Invia più comandi come un unico batch nei framework di destinazione supportati. |
Programma contro le astrazioni ADO.NET quando una libreria deve supportare più fornitori di database. Usa i tipi SqlClient quando un'applicazione prende di mira SQL Server e necessita di funzionalità specifiche per il provider.
Accesso ai dati connessi
L'accesso connesso mantiene una connessione disponibile mentre un comando è in esecuzione e mentre l'applicazione ne legge i risultati.
Segue una richiesta comune a questa sequenza:
- Crea un
SqlConnectionda una stringa di connessione. - Aprire la connessione.
- Crea un
SqlCommande aggiungiSqlParametervalori. - Eseguire il comando .
- Elabora un valore scalare, un numero di righe interessate o
SqlDataReader. - Eliminare il reader, il comando e la connessione.
Usa l'accesso connesso per la maggior parte delle API web, servizi, lavoratori e applicazioni da riga di comando.
SqlDataReader trasmette le righe in streaming e di solito usa meno memoria rispetto al caricamento dell'intero risultato in un DataSet.
Aprire ed eliminare un SqlConnection per ogni unità di lavoro è lo schema normale. Il pooling delle connessioni riutilizza la connessione fisica sottostante. Non lasciare aperta una connessione globale per tutta la vita di un'applicazione.
Accesso ai dati disconnesso
SqlDataAdapter trasferisce dati tra SQL Server e un DataSet o DataTable in memoria. L'applicazione può chiudere la connessione mentre legge o modifica i dati in memoria, poi riconnettersi per inviare aggiornamenti.
Usa accesso disconnesso quando hai bisogno di:
- Associazione dati a
DataSetoDataTable. - Relazioni e vincoli in memoria.
- Modifiche offline che vengono riconciliate in seguito.
- Compatibilità con un'applicazione esistente basata su DataAdapter.
Per i nuovi servizi orientati alle richieste, inizia con SqlCommand e SqlDataReader a meno che tu non abbia bisogno del modello degli oggetti disconnessi.
Caratteristiche specifiche di SQL Server
Microsoft. Data.SqlClient aggiunge API e comportamenti di connessione che non fanno parte del contratto ADO.NET indipendente dal provider:
- Callback per l'autenticazione e per i token di accesso di Microsoft Entra.
- TDS 8.0 crittografia rigorosa e opzioni di certificato SQL Server.
- Enclave sempre criptate e sicure.
-
SqlBulkCopyper il caricamento dei dati ad alta velocità. - Parametri con valori di tabella.
- Tipi di dati SQL Server, inclusi tipi JSON e vettoriali.
- Logica di ripetizione dei tentativi configurabile.
- Diagnostica, statistiche e contatori di SQL Server.
- Gruppo di disponibilità e opzioni di connessione per il failover.
L'uso di queste funzionalità collega quel codice a Microsoft. Data.SqlClient. Mantenere il codice specifico del fornitore dietro un confine di accesso ai dati se il resto dell'applicazione deve rimanere indipendente dal fornitore.
Durata dell'oggetto e concorrenza
Elimina rapidamente connessioni, comandi, lettori, transazioni e oggetti di copia in massa. Usa await using con codice asincrono quando un tipo implementa IAsyncDisposable.
SqlConnection, SqlCommand, SqlDataReader, e SqlTransaction non supportano l'uso simultaneo da più thread. Assegnare a ogni operazione concorrente una propria connessione e affidarsi al pooling di connessioni. Multiple Active Result Set (MARS) consente più di un set di risultati attivi su una connessione, ma non rende gli oggetti SqlClient thread-safe.
Pacchetti e namespace
Installa il Microsoft.Data.SqlClient pacchetto NuGet e importa il Microsoft.Data.SqlClient namespace. Il driver viene fornito indipendentemente da .NET, quindi le sue funzionalità, rilascio e programmi di supporto differiscono da quelli del runtime .NET.
System.Data.SqlClient è il fornitore più anziano. Usa Microsoft. Data.SqlClient per nuovi sviluppi. Per un'applicazione esistente, segui Migrate da System.Data.SqlClient a Microsoft. Data.SqlClient.