Provedores de dados .NET Framework

Um provedor de dados .NET Framework é usado para se conectar a um banco de dados, executar comandos e recuperar resultados. Os resultados são processados diretamente, colocados no DataSet para serem expostos ao usuário conforme o necessário, combinados com os dados de várias fontes ou colocados remotamente entre camadas. Os provedores de dados .NET Framework são leves, criando uma camada mínima entre a fonte de dados e o código, aumentando o desempenho sem sacrificar a funcionalidade.

A tabela a seguir lista os provedores de dados incluídos no .NET Framework.

Provedor de dados .NET Framework Descrição
Provedor de dados do .NET Framework para SQL Server Fornece acesso a dados para o Microsoft SQL Server. Usa o namespace System.Data.SqlClient.
Provedor de dados .NET Framework para OLE DB Para fontes de dados expostas usando o OLE DB. Usa o namespace System.Data.OleDb.
Provedor de dados .NET Framework para ODBC Para fontes de dados expostas usando ODBC. Usa o namespace System.Data.Odbc.
Provedor de Dados do .NET Framework para Oracle Para fontes de dados Oracle. O provedor de dados .NET Framework para Oracle dá suporte a um cliente de software Oracle versão 8.1.7 e posterior e usa o namespace System.Data.OracleClient.
Provedor EntityClient Fornece acesso a dados para aplicativos de Modelo de Dados de Entidade (EDM). Usa o namespace System.Data.EntityClient.
Provedor de Dados .NET Framework para SQL Server Compact 4.0. Fornece acesso a dados para o Microsoft SQL Server Compact 4.0. Usa o namespace System.Data.SqlServerCe.

Os objetos principais de provedores de dados .NET Framework

A tabela a seguir descreve os quatro objetos principais que compõem um provedor de dados .NET Framework.

Objeto Descrição
Connection Estabelece uma conexão com uma fonte de dados específica. A classe base para todos os objetos de Connection é a classe DbConnection.
Command Executa um comando em uma fonte de dados. Expõe Parameters e pode ser executado no escopo de uma Transaction de Connection. A classe base para todos os objetos de Command é a classe DbCommand.
DataReader Ler um fluxo de dados apenas de encaminhamento e somente leitura de uma fonte de dados. A classe base para todos os objetos de DataReader é a classe DbDataReader.
DataAdapter Preenche um DataSet e resolve atualizações com a fonte de dados. A classe base para todos os objetos de DataAdapter é a classe DbDataAdapter.

Além das classes principais listadas na tabela anteriormente neste documento, um provedor de dados .NET Framework também contém as classes listadas na tabela a seguir.

Objeto Descrição
Transaction Insere comandos nas transações na fonte de dados. A classe base para todos os objetos de Transaction é a classe DbTransaction. O ADO.NET também fornece suporte para transações usando classes no namespace System.Transactions.
CommandBuilder Um objeto auxiliar que gera automaticamente propriedades de comando de um DataAdapter ou deriva informações de parâmetro de um procedimento armazenado e preenche a coleção Parameters de um objeto Command. A classe base para todos os objetos de CommandBuilder é a classe DbCommandBuilder.
ConnectionStringBuilder Um objeto auxiliar que fornece uma maneira simples de criar e gerenciar o conteúdo de cadeias de conexão usadas por objetos de Connection. A classe base para todos os objetos de ConnectionStringBuilder é a classe DbConnectionStringBuilder.
Parameter Define os parâmetros de valores de entrada, saída e retorno para comandos e procedimentos armazenados. A classe base para todos os objetos de Parameter é a classe DbParameter.
Exception Retornado quando um erro é encontrado na fonte de dados. Para um erro encontrado no cliente, provedores de dados .NET Framework geram uma exceção do .NET Framework. A classe base para todos os objetos de Exception é a classe DbException.
Error Expõe as informações de um aviso ou erro retornado por uma fonte de dados.
ClientPermission Fornecido para os atributos de segurança de acesso a código do provedor de dados .NET Framework. A classe base para todos os objetos de ClientPermission é a classe DBDataPermission.

Provedor de Dados .NET Framework para SQL Server (SqlClient)

O Provedor de Dados .NET Framework para SQL Server (SqlClient) usa o próprio protocolo para se comunicar com o SQL Server. Ele é leve e tem bom desempenho porque é otimizado para acessar um SQL Server diretamente sem adicionar um OLE DB ou uma camada de ODBC (Open Database Connectivity). A ilustração a seguir compara o Provedor de Dados .NET Framework para SQL Server e o Provedor de Dados .NET Framework para OLE DB. O Provedor de Dados .NET Framework para OLE DB se comunica com uma fonte de dados do OLE DB por meio do componente de serviço do OLE DB, que fornece serviços do pool de conexões e de transação, e do provedor OLE DB para a fonte de dados.

Observação

O Provedor de Dados .NET Framework para ODBC tem uma arquitetura semelhante à do Provedor de Dados .NET Framework para OLE DB; por exemplo, ele chama em um Componente de Serviço de ODBC.

Data providers
Comparação do Provedor de dados .NET Framework para SQL Server e o Provedor de dados .NET Framework para OLE DB

As classes do Provedor de Dados .NET Framework para SQL Server estão localizadas no namespace System.Data.SqlClient.

O Provedor de Dados .NET Framework para SQL Server dá suporte a transações locais e distribuídas. Para transações distribuídas, o Provedor de Dados .NET Framework para SQL Server, por padrão, automaticamente se inscreve em uma transação e obtém detalhes da transação do Windows Component Services ou System.Transactions. Para obter mais informações, consulte Transações e simultaneidade.

O exemplo de código a seguir mostra como incluir o namespace System.Data.SqlClient em seus aplicativos.

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

Provedor de dados .NET Framework para OLE DB

O Provedor de Dados .NET Framework para OLE DB (OleDb) usa o OLE DB nativo por meio da interoperabilidade de COM para habilitar o acesso a dados. O Provedor de Dados .NET Framework para OLE DB dá suporte a transações locais e distribuídas. Para transações distribuídas, o Provedor de Dados .NET Framework para OLE DB, por padrão, automaticamente se inscreve em uma transação e obtém detalhes de transação do Windows Component Services. Para obter mais informações, consulte Transações e simultaneidade.

A tabela a seguir mostra os provedores que foram testados com o ADO.NET.

Driver Provedor
SQLOLEDB Provedor do Microsoft OLE DB para SQL Server
MSDAORA Provedor do Microsoft OLE DB para Oracle
Microsoft.Jet.OLEDB.4.0 Provedor do OLE DB para Microsoft Jet

Observação

Usar um banco de dados Access (Jet) como uma fonte de dados para aplicativos com vários threads, como aplicativos ASP.NET, não é recomendado. Se você tiver que usar Jet como uma fonte de dados para um aplicativo ASP.NET, observe que aplicativos ASP.NET que estão se conectando a um banco de dados Access podem encontrar problemas de conexão.

O Provedor de Dados .NET Framework para OLE DB não dá suporte a interfaces da versão 2.5 do OLE DB. Os Provedores do OLE DB que exigem suporte para interfaces do OLE DB 2.5 não funcionarão corretamente com o Provedor de Dados .NET Framework para OLE DB. Isso inclui o provedor do Microsoft OLE DB para Exchange e o provedor do Microsoft OLE DB para publicação na Internet.

O Provedor de Dados .NET Framework para OLE DB não funciona com o provedor do OLE DB para ODBC (MSDASQL). Para acessar uma fonte de dados ODBC usando ADO.NET, use o Provedor de Dados .NET Framework para ODBC.

As classes do Provedor de Dados .NET Framework para OLE DB estão localizadas no namespace System.Data.OleDb. O exemplo de código a seguir mostra como incluir o namespace System.Data.OleDb em seus aplicativos.

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

Provedor de dados .NET Framework para ODBC

O Provedor de Dados .NET Framework para ODBC usa o ODBC Driver Manager (DM) nativo para habilitar o acesso a dados. O provedor de dados do ODBC oferece suporte a transações locais e distribuídas. Para transações distribuídas, o Provedor de dados do ODBC, por padrão, automaticamente inscreve-se em uma transação e obtém detalhes de transação do Windows Component Services. Para obter mais informações, consulte Transações e simultaneidade.

A tabela a seguir mostra os drivers ODBC testados com o ADO.NET.

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

As classes do Provedor de Dados .NET Framework para ODBC estão localizadas no namespace System.Data.Odbc.

O exemplo de código a seguir mostra como incluir o namespace System.Data.Odbc em seus aplicativos.

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

Observação

O Provedor de Dados .NET Framework para ODBC exige o MDAC 2.6 ou posterior, e o MDAC 2.8 SP1 é recomendado.

Provedor de Dados do .NET Framework para Oracle

O Provedor de Dados .NET Framework para Oracle (OracleClient) permite o acesso a dados a fontes de dados do Oracle por meio do software de conectividade de cliente da Oracle. O provedor de dados oferece suporte a um software cliente do Oracle versão 8.1.7 ou posterior. O provedor de dados oferece suporte a transações locais e distribuídas. Para obter mais informações, consulte Transações e simultaneidade.

O Provedor de Dados .NET Framework para Oracle exige o software cliente da Oracle (versão 8.1.7 ou posterior) no sistema antes que você possa se conectar a uma fonte de dados do Oracle.

As classes do Provedor de Dados .NET Framework para Oracle estão localizadas no namespace System.Data.OracleClient e contidas no assembly System.Data.OracleClient.dll. Você deve fazer referência a System.Data.dll e a System.Data.OracleClient.dll ao criar um aplicativo que usa o provedor de dados.

O exemplo de código a seguir mostra como incluir o namespace System.Data.OracleClient em seus aplicativos.

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

Escolhendo um Provedor de dados .NET Framework

Dependendo do design e da fonte de dados para seu aplicativo, sua escolha do provedor de dados .NET Framework pode melhorar o desempenho, os recursos e a integridade do aplicativo. A tabela a seguir descreve as vantagens e as limitações de cada provedor de dados .NET Framework.

Provedor Observações
Provedor de dados do .NET Framework para SQL Server Recomendado para aplicativos de camada intermediária que usam o Microsoft SQL Server.

Recomendado para aplicativos de camada única que usam o Microsoft Database Engine (MSDE) ou o SQL Server.

Recomendado em vez do uso do provedor do OLE DB para SQL Server (SQLOLEDB) com o Provedor de Dados .NET Framework para OLE DB.
Provedor de dados .NET Framework para OLE DB Para o SQL Server, o Provedor de Dados .NET Framework para SQL Server é recomendado em vez desse provedor.

Recomendado para aplicativos de camada única que usam os bancos de dados Microsoft Access. O uso de um banco de dados Access para um aplicativo de camada intermediária não é recomendado.
Provedor de dados .NET Framework para ODBC Recomendado para aplicativos de camada única e intermediária que usam fontes de dados ODBC.
Provedor de Dados do .NET Framework para Oracle Recomendado para aplicativos de camada única e intermediária que usam fontes de dados Oracle.

Provedor EntityClient

O provedor EntityClient é usado para acessar dados com base no EDM (Modelo de Dados de Entidade). Diferentemente de outros provedores de dados .NET Framework, ele não interage diretamente com uma fonte de dados. Em vez disso, ele usa o Entity SQL para se comunicar com o provedor de dados subjacente. Para obter mais informações, consulte EntityClient Provider para o Entity Framework.

Confira também