Proveedores de datos .NET Framework

Los proveedores de datos de .NET Framework sirven para conectarse a una base de datos, ejecutar comandos y recuperar resultados. Esos resultados se procesan directamente, se colocan en un DataSet con el fin de que el usuario pueda verlos cuando los necesite, se combinan con datos de varios orígenes o se utilizan de forma remota entre niveles. Los proveedores de datos de .NET Framework son ligeros, de manera que crean una capa mínima entre el origen de datos y el código, con lo que aumenta el rendimiento sin sacrificar funcionalidad.

En la tabla siguiente se muestran los proveedores de datos que se incluyen en .NET Framework.

proveedor de datos de .NET Framework (.NET Framework data provider) Descripción
Proveedor de datos .NET Framework para SQL Server Proporciona acceso de datos para Microsoft SQL Server. Utiliza el espacio de nombres System.Data.SqlClient .
Proveedor de datos .NET Framework para OLE DB Para orígenes de datos que se exponen mediante OLE DB. Utiliza el espacio de nombres System.Data.OleDb .
Proveedor de datos .NET Framework para ODBC Para orígenes de datos que se exponen mediante ODBC. Utiliza el espacio de nombres System.Data.Odbc .
Proveedor de datos .NET Framework para Oracle Para orígenes de datos de Oracle. El proveedor de datos de .NET Framework para Oracle es compatible con la versión 8.1.7 y posteriores del software de cliente de Oracle y utiliza el espacio de nombres System.Data.OracleClient.
Proveedor para EntityClient Proporciona acceso a datos para las aplicaciones de Entity Data Model (EDM). Utiliza el espacio de nombres System.Data.EntityClient .
Proveedor de datos de .NET Framework para SQL Server Compact 4.0. Proporciona acceso a datos para Microsoft SQL Server Compact 4.0. Usa el espacio de nombres System.Data.SqlServerCe .

Objetos principales de los proveedores de datos .NET Framework

En la tabla siguiente se describen los cuatro objetos centrales que constituyen un proveedor de datos de .NET Framework.

Object Descripción
Connection Establece una conexión a un origen de datos determinado. La clase base para todos los objetos Connection es DbConnection .
Command Ejecuta un comando en un origen de datos. Expone Parameters y puede ejecutarse en el ámbito de un objeto Transaction desde Connection. La clase base para todos los objetos Command es DbCommand .
DataReader Lee un flujo de datos de solo avance y solo lectura desde un origen de datos. La clase base para todos los objetos DataReader es DbDataReader .
DataAdapter Llena un DataSet y realiza las actualizaciones necesarias en el origen de datos. La clase base para todos los objetos DataAdapter es DbDataAdapter .

Además de las clases principales citadas en la tabla expuesta anteriormente en este documento, los proveedores de datos de .NET Framework también incluyen las que se enumeran en la tabla siguiente.

Object Descripción
Transaction Incluye comandos en las transacciones que se realizan en el origen de datos. La clase base para todos los objetos Transaction es DbTransaction . ADO.NET es también compatible con las transacciones que usan clases en el espacio de nombres System.Transactions .
CommandBuilder Un objeto del asistente que genera automáticamente las propiedades de comando de un DataAdapter o que obtiene de un procedimiento almacenado información acerca de parámetros con la que puede rellenar la colección Parameters de un objeto Command. La clase base para todos los objetos CommandBuilder es DbCommandBuilder .
ConnectionStringBuilder Un objeto del asistente que proporciona un modo sencillo de crear y administrar el contenido de las cadenas de conexión utilizadas por los objetos Connection. La clase base para todos los objetos ConnectionStringBuilder es DbConnectionStringBuilder .
Parameter Define los parámetros de entrada, salida y valores devueltos para los comandos y procedimientos almacenados. La clase base para todos los objetos Parameter es DbParameter .
Exception Se devuelve cuando se detecta un error en el origen de datos. Cuando se detecta un error en el cliente, los proveedores de datos de .NET Framework producen una excepción de .NET Framework. La clase base para todos los objetos Exception es DbException .
Error Expone la información relacionada con una advertencia o error devueltos por un origen de datos.
ClientPermission Se proporciona para los atributos de seguridad de acceso del código de los proveedores de datos de .NET Framework. La clase base para todos los objetos ClientPermission es DBDataPermission .

Proveedor de datos .NET Framework para SQL Server (SqlClient)

El proveedor de datos de .NET Framework para SQL Server (SqlClient) usa su propio protocolo para comunicarse con SQL Server. Es ligero y presenta un buen rendimiento porque está optimizado para acceder a SQL Server directamente sin agregar una capa de OLE DB o de conectividad abierta de bases de datos (ODBC). En la ilustración siguiente se compara el proveedor de datos de .NET Framework para SQL Server con el proveedor de datos de .NET Framework para OLE DB. El proveedor de datos de .NET Framework para OLE DB se comunica con un origen de datos de OLE DB tanto mediante el componente de servicio OLE DB, que proporciona agrupación de conexiones y servicios de transacción, como del proveedor OLE DB correspondiente al origen de datos.

Nota:

El proveedor de datos de .NET Framework para ODBC cuenta con una arquitectura similar a la del proveedor de datos de .NET Framework para OLE DB; por ejemplo, llama a un componente de servicio ODBC.

Data providers
Comparación del proveedor de datos .NET Framework para SQL Server y el proveedor de datos .NET Framework para OLE DB

El proveedor de datos de .NET Framework para clases de SQL Server clases se encuentra en el espacio de nombres System.Data.SqlClient.

El proveedor de datos de .NET Framework para SQL Server admite tanto transacciones locales como distribuidas. En el caso de las transacciones distribuidas, el proveedor de datos de .NET Framework para SQL Server se inscribe de forma predeterminada y automática en una transacción y obtiene los detalles de esta a través de los servicios de componentes de Windows o System.Transactions. Para más información, consulte Transacciones y simultaneidad.

En el siguiente ejemplo de código se muestra cómo puede incluir el espacio de nombres System.Data.SqlClient en sus aplicaciones.

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

Proveedor de datos .NET Framework para OLE DB

El proveedor de datos de .NET Framework para OLE DB (OleDb) usa OLE DB nativo con el fin de habilitar el acceso a datos mediante la interoperabilidad COM. El proveedor de datos de .NET Framework para OLE DB admite tanto transacciones locales como distribuidas. En el caso de las transacciones distribuidas, el proveedor de datos de .NET Framework para OLE DB se inscribe de forma predeterminada y automática en una transacción y obtiene detalles de transacción a través de los servicios de componentes de Windows. Para más información, consulte Transacciones y simultaneidad.

En la siguiente tabla se muestran los proveedores probados con ADO.NET.

Controlador Proveedor
SQLOLEDB Proveedor Microsoft OLE DB para SQL Server
MSDAORA Proveedor Microsoft OLE DB para Oracle
Microsoft.Jet.OLEDB.4.0 Proveedor OLE DB para Microsoft Jet

Nota:

No se recomienda el uso de una base de datos de Access (Jet) como origen de datos para aplicaciones multiproceso, como las aplicaciones de ASP.NET. Si debe usar Jet como origen de datos para una aplicación ASP.NET, ha de ser consciente de que las aplicaciones ASP.NET que se conectan a una base de datos Access pueden tener problemas de conexión.

El proveedor de datos de .NET Framework para OLE DB no admite las interfaces de la versión 2.5 de OLE DB. Los proveedores de OLE DB que requieren compatibilidad con interfaces de OLE DB 2.5 no funcionarán correctamente con el proveedor de datos de .NET Framework para OLE DB. Entre ellos se incluye el proveedor Microsoft OLE DB para Exchange y el proveedor Microsoft OLE DB para la publicación en Internet.

El proveedor de datos de .NET Framework para OLE DB no funciona con el proveedor de OLE DB para ODBC (MSDASQL). Para acceder a un origen de datos ODBC mediante ADO.NET, use el proveedor de datos de .NET Framework para ODBC.

Las clases del proveedor de datos de .NET Framework para OLE DB se encuentran en el espacio de nombres System.Data.OleDb. En el siguiente ejemplo de código se muestra cómo puede incluir el espacio de nombres System.Data.OleDb en sus aplicaciones.

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

Proveedor de datos .NET Framework para ODBC

El proveedor de datos de .NET Framework para ODBC (Odbc) usa el Administrador de controladores (DM) ODBC nativos para habilitar el acceso a datos. El proveedor de datos de ODBC admite tanto transacciones locales como transacciones distribuidas. En el caso de las transacciones distribuidas, el proveedor de datos OBDC se inscribe de forma predeterminada y automática en una transacción y obtiene los detalles a través de los servicios de componentes de Windows. Para más información, consulte Transacciones y simultaneidad.

En la siguiente tabla se muestran los controladores ODBC que se han probado con ADO.NET.

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

Las clases del proveedor de datos de .NET Framework para ODBC se encuentra en el espacio de nombres System.Data.Odbc.

En el siguiente ejemplo de código se muestra cómo puede incluir el espacio de nombres System.Data.Odbc en sus aplicaciones.

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

Nota

El proveedor de datos de .NET Framework para ODBC necesita MDAC 2.6 o una versión posterior, pero se recomienda MDAC 2.8 SP1.

Proveedor de datos .NET Framework para Oracle

El proveedor de datos de .NET Framework para Oracle (OracleClient) permite el acceso a datos de orígenes de datos de Oracle mediante el software de conectividad de cliente de Oracle. El proveedor de datos es compatible con la versión 8.1.7 o posterior del software de cliente de Oracle. El proveedor de datos admite tanto transacciones locales como transacciones distribuidas. Para más información, consulte Transacciones y simultaneidad.

El proveedor de datos de .NET Framework para Oracle requiere que el software de cliente de Oracle (versión 8.1.7 o posterior) esté instalado en el sistema antes de conectarse a un origen de datos de Oracle.

Las clases del proveedor de datos de .NET Framework para Oracle se encuentran en el espacio de nombres System.Data.OracleClient y están incluidas en el ensamblado System.Data.OracleClient.dll. Al compilar una aplicación que utiliza el proveedor de datos, debe hacer referencia tanto a System.Data.dll como a System.Data.OracleClient.dll .

En el siguiente ejemplo de código se muestra cómo puede incluir el espacio de nombres System.Data.OracleClient en sus aplicaciones.

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

Elegir un proveedor de datos .NET Framework

En función del diseño y del origen de datos de su aplicación, su elección del proveedor de datos de .NET Framework puede mejorar el rendimiento, la funcionalidad y la integridad de su aplicación. En la siguiente tabla se describen las ventajas y las limitaciones de cada proveedor de datos de .NET Framework.

Proveedor Notas
Proveedor de datos .NET Framework para SQL Server Recomendado para aplicaciones de nivel intermedio que usan Microsoft SQL Server.

Recomendado para aplicaciones de nivel único que usan el Motor de base de datos de Microsoft (MSDE) o SQL Server.

Se recomienda frente al uso del proveedor de OLE DB para SQL Server (SQLOLEDB) con el proveedor de datos de .NET Framework para OLE DB.
Proveedor de datos .NET Framework para OLE DB Para SQL Server, se recomienda el proveedor de datos de .NET Framework para SQL Server en lugar de este proveedor.

Recomendado para aplicaciones de nivel único que usan bases de datos de Microsoft Access. No se recomienda el uso de bases de datos de Access para una aplicación de nivel medio.
Proveedor de datos .NET Framework para ODBC Recomendado para aplicaciones de un único nivel y de nivel medio que utilizan orígenes de datos de ODBC.
Proveedor de datos .NET Framework para Oracle Recomendado para aplicaciones de un único nivel y de nivel medio que utilizan orígenes de datos de Oracle.

Proveedor para EntityClient

El proveedor EntityClient se usa para obtener acceso a datos basándose en un Entity Data Model (EDM). A diferencia de otros proveedores de datos .NET Framework, no interactúa directamente con ningún origen de datos. En su lugar, usa Entity SQL para comunicarse con el proveedor de datos subyacente. Para obtener más información, consulte Proveedor de EntityClient para Entity Framework.

Consulte también