Provider di dati .NET Framework

Un provider di dati .NET Framework consente di effettuare una connessione a un database, eseguire comandi e recuperare risultati. Tali risultati vengono elaborati direttamente, inseriti in un oggetto DataSet in modo da consentirne l'esposizione all'utente se necessario, combinati con dati provenienti da più origini o elaborati in modalità remota tra livelli. I provider di dati .NET Framework presentano una struttura semplice e creano un livello minimo tra l'origine dati e il codice, migliorando quindi le prestazioni senza compromettere le funzionalità.

Nella tabella seguente sono elencati i provider di dati inclusi in .NET Framework.

Provider di dati .NET Framework Descrizione
Provider di dati .NET Framework per SQL Server Consente l'accesso ai dati per Microsoft SQL Server. Usa lo spazio dei nomi System.Data.SqlClient .
Provider di dati .NET Framework per OLE DB Per origini dati esposte tramite OLE DB. Usa lo spazio dei nomi System.Data.OleDb .
Provider di dati .NET Framework per ODBC Per origini dati esposte tramite ODBC. Usa lo spazio dei nomi System.Data.Odbc .
Provider di dati .NET Framework per Oracle Per origini dei dati Oracle. Il provider di dati .NET Framework per Oracle può essere usato con software client Oracle 8.1.7 e versioni successive e usa lo spazio dei nomi System.Data.OracleClient.
Provider EntityClient Fornisce accesso ai dati per le applicazioni Entity Data Model (EDM). Usa lo spazio dei nomi System.Data.EntityClient .
Provider di dati .NET Framework per SQL Server Compact 4.0. Consente l'accesso ai dati per Microsoft SQL Server Compact 4.0. Usa lo spazio dei nomi System.Data.SqlServerCe .

Oggetti principali dei provider di dati .NET Framework

La tabella seguente delinea i quattro oggetti principali che costituiscono un provider di dati .NET Framework.

Oggetto Descrizione
Connection Consente di stabilire una connessione a un'origine dati specifica. La classe di base per tutti gli oggetti Connection è DbConnection .
Command Consente di eseguire un comando su un'origine dati. Espone Parameters e può essere eseguito nell'ambito di Transaction da Connection. La classe di base per tutti gli oggetti Command è DbCommand .
DataReader Consente di leggere un flusso di dati forward-only di sola lettura da un'origine dati. La classe di base per tutti gli oggetti DataReader è DbDataReader .
DataAdapter Consente di popolare un DataSet e di risolvere gli aggiornamenti con l'origine dati. La classe di base per tutti gli oggetti DataAdapter è DbDataAdapter .

Oltre alle classi principali elencate nella tabella precedente, un provider di dati .NET Framework contiene anche le classi elencate nella tabella seguente.

Oggetto Descrizione
Transaction Consente di inserire i comandi in transazioni nell'origine dati. La classe di base per tutti gli oggetti Transaction è DbTransaction . In ADO.NET è anche disponibile il supporto per le transazioni che usano le classi nello spazio dei nomi System.Transactions .
CommandBuilder Oggetto helper che genera automaticamente le proprietà dei comandi di un oggetto DataAdapter o deriva le informazioni sui parametri da una stored procedure e popola la raccolta Parameters di un oggetto Command . La classe di base per tutti gli oggetti CommandBuilder è DbCommandBuilder .
ConnectionStringBuilder Oggetto helper che offre un metodo semplice per creare e gestire il contenuto delle stringhe di connessione usate dagli oggetti Connection . La classe di base per tutti gli oggetti ConnectionStringBuilder è DbConnectionStringBuilder .
Parameter Definisce i parametri di input, output e dei valori restituiti per i comandi e le stored procedure. La classe di base per tutti gli oggetti Parameter è DbParameter .
Exception Viene restituito quando si verifica un errore nell'origine dati. Per un errore rilevato nel client, i provider di dati .NET Framework generano un'eccezione .NET Framework. La classe di base per tutti gli oggetti Exception è DbException .
Error Espone le informazioni di un avviso o di un errore restituito da un'origine dati.
ClientPermission Viene fornito per gli attributi di sicurezza dell'accesso al codice del provider di dati .NET Framework. La classe di base per tutti gli oggetti ClientPermission è DBDataPermission .

Provider di dati .NET Framework per SQL Server (SqlClient)

Il provider di dati .NET Framework per SQL Server (SqlClient) usa il proprio protocollo per comunicare con SQL Server. È caratterizzato da una struttura semplice e offre buone prestazioni perché è ottimizzato per l'accesso diretto a SQL Server senza aggiungere alcun livello OLE DB o ODBC (Open Database Connectivity). La figura seguente mostra le differenze tra il provider di dati .NET Framework per SQL Server e il provider di dati .NET Framework per OLE DB. Il provider di dati .NET Framework per OLE DB comunica con un'origine dati OLE DB tramite il componente Servizio OLE DB, che fornisce pool di connessioni e servizi di transazione, e il provider OLE DB per l'origine dati.

Nota

L'architettura del provider di dati .NET Framework per ODBC è simile a quella del provider di dati .NET Framework per OLE DB. Come quest'ultimo, ad esempio, effettua una chiamata a un componente Servizio ODBC.

Data providers
Confronto tra il provider di dati .NET Framework per SQL Server e il provider di dati .NET Framework per OLE DB

Le classi del provider di dati .NET Framework per SQL Server si trovano nello spazio dei nomi System.Data.SqlClient.

Il provider di dati .NET Framework per SQL Server supporta transazioni locali e distribuite. Per le transazioni distribuite, il provider di dati .NET Framework per SQL Server si inserisce automaticamente, per impostazione predefinita, in una transazione e ottiene i dettagli relativi alla transazione da Servizi componenti di Windows o System.Transactions. Per altre informazioni, vedere Transazioni e concorrenza.

Nell'esempio di codice seguente viene illustrato come includere lo spazio dei nomi System.Data.SqlClient nelle applicazioni.

Imports System.Data.SqlClient  
using System.Data.SqlClient;  

Provider di dati .NET Framework per OLE DB

Per consentire l'accesso ai dati, il provider di dati .NET Framework per OLE DB (OleDb) usa il provider OLE DB nativo tramite l'interoperabilità COM. Il provider di dati .NET Framework per OLE DB supporta transazioni sia locali che distribuite. Per le transazioni distribuite, il provider di dati .NET Framework per OLE DB si inserisce automaticamente, per impostazione predefinita, in una transazione e ottiene i dettagli relativi alla transazione da Servizi componenti di Windows. Per altre informazioni, vedere Transazioni e concorrenza.

Nella tabella seguente sono elencati i provider che sono stati testati con ADO.NET.

Driver Provider
SQLOLEDB Provider Microsoft OLE DB per SQL Server
MSDAORA Provider Microsoft OLE DB per Oracle
Microsoft.Jet.OLEDB.4.0 Provider OLE DB per Microsoft Jet

Nota

È sconsigliato l'uso di un database Access (Jet) come origine dati per applicazioni con multithreading, quali le applicazioni ASP.NET. Se è necessario usare Jet come origine dati per un'applicazione ASP.NET, tenere presente che le applicazioni ASP.NET che si connettono a un database Access possono riscontrare problemi di connessione.

Il provider di dati .NET Framework per OLE DB non supporta le interfacce di OLE DB versione 2.5. I provider OLE DB che richiedono il supporto di interfacce di OLE DB 2.5 non funzioneranno correttamente con il provider di dati .NET Framework per OLE DB. Tra tali provider sono inclusi il provider Microsoft OLE DB per Exchange e il provider Microsoft OLE DB per Internet Publishing.

Non è possibile usare il provider di dati .NET Framework per OLE DB con il provider OLE DB per ODBC (MSDASQL). Per accedere a un'origine dati ODBC tramite ADO.NET, usare il provider di dati .NET Framework per ODBC.

Le classi del provider di dati .NET Framework per OLE DB si trovano nello spazio dei nomi System.Data.OleDb. Nell'esempio di codice seguente viene illustrato come includere lo spazio dei nomi System.Data.OleDb nelle applicazioni.

Imports System.Data.OleDb  
using System.Data.OleDb;  

Provider di dati .NET Framework per ODBC

Il provider di dati .NET Framework per ODBC (Odbc) usa Gestione driver (DM) ODBC nativo per abilitare l'accesso ai dati. Il provider di dati ODBC supporta transazioni sia locali che distribuite. Per le transazioni distribuite, il provider di dati per ODBC si inserisce automaticamente, per impostazione predefinita, in una transazione e ottiene i dettagli relativi alla transazione da Servizi componenti di Windows. Per altre informazioni, vedere Transazioni e concorrenza.

Nella tabella seguente sono elencati i driver ODBC testati con ADO.NET.

Driver
SQL Server
Microsoft ODBC per Oracle
Driver per Microsoft Access (*.mdb)

Le classi del provider di dati .NET Framework per ODBC si trovano nello spazio dei nomi System.Data.Odbc.

Nell'esempio di codice seguente viene illustrato come includere lo spazio dei nomi System.Data.Odbc nelle applicazioni.

Imports System.Data.Odbc  
using System.Data.Odbc;  

Nota

Per il provider di dati .NET Framework per ODBC è richiesto MDAC 2.6 o versione successiva ed è consigliato MDAC 2.8 Service Pack 1 (SP1).

Provider di dati .NET Framework per Oracle

Il provider di dati .NET Framework per Oracle (OracleClient) consente l'accesso alle origini dati Oracle tramite il software di connettività per client Oracle. Il provider di dati può essere usato con il software client Oracle 8.1.7 o versione successiva. Il provider di dati supporta transazioni sia locali che distribuite. Per altre informazioni, vedere Transazioni e concorrenza.

Il provider di dati .NET Framework per Oracle richiede software client Oracle (versione 8.1.7 o successiva) nel sistema prima di potersi connettere a un'origine dati Oracle.

Le classi del provider di dati .NET Framework per Oracle si trovano nello spazio dei nomi System.Data.OracleClient all'interno dell'assembly System.Data.OracleClient.dll. Quando si compila un'applicazione in cui viene usato il provider di dati, è necessario fare riferimento sia a System.Data.dll che a System.Data.OracleClient.dll .

Nell'esempio di codice seguente viene illustrato come includere lo spazio dei nomi System.Data.OracleClient nelle applicazioni.

Imports System.Data  
Imports System.Data.OracleClient  
using System.Data;  
using System.Data.OracleClient;  

Scelta di un provider di dati .NET Framework

A seconda della struttura e dell'origine dati di un'applicazione, la scelta del provider di dati .NET Framework più appropriato può migliorare le prestazioni, le funzionalità e l'integrità dell'applicazione. La tabella seguente illustra i vantaggi e i limiti di ogni provider di dati .NET Framework.

Provider Note
Provider di dati .NET Framework per SQL Server Consigliato per applicazioni di livello intermedio che usano Microsoft SQL Server.

Consigliato per applicazioni a un solo livello che usano Microsoft Database Engine (MSDE) oppure SQL Server.

Consigliato rispetto all'uso del provider OLE DB per SQL Server (SQLOLEDB) con il provider di dati .NET Framework per OLE DB.
Provider di dati .NET Framework per OLE DB Per SQL Server, è consigliabile usare il provider di dati .NET Framework per SQL Server anziché questo provider.

Consigliato per applicazioni a un solo livello che usano database di Microsoft Access. L'uso di un database di Microsoft Access per applicazioni di livello intermedio non è consigliato.
Provider di dati .NET Framework per ODBC Consigliato per applicazioni a un solo livello o a livello intermedio che usano origini dati ODBC.
Provider di dati .NET Framework per Oracle Consigliato per applicazioni a un solo livello o a livello intermedio che usano origini dati Oracle.

Provider EntityClient

Il provider EntityClient è usato per l'accesso ai dati basati su Entity Data Model (EDM). A differenza degli altri provider di dati .NET Framework, non interagisce direttamente con un'origine dati, ma usa Entity SQL per comunicare con il provider di dati sottostante. Per ulteriori informazioni, vedere Provider EntityClient per Entity Framework.

Vedi anche