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.
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;
Scegliere 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.