2009-10-26 16 views
13

¿Cuál es la mejor biblioteca/controlador para conectar la aplicación C# (.NET) a Oracle 10g y 11g?
opciones actuales que he encontrado son:Conectando C# a Oracle

  1. cliente de Oracle que viene con la instalación de bases de datos Oracle
  2. cliente instantáneo (que es un poco confuso, ya que tiene 6-8 versiones para varios sistemas operativos)
  3. Microsoft ODBC? (¿Se puede usar esto?)
  4. ODP.Net - ¿este producto está separado o está incluido en 1. y 2.?

¿Alguien puede explicar las diferencias?

Estoy planeando la aplicación C# que realizará operaciones CRUD básicas en la base de datos Oracle. ¿Qué biblioteca/controlador es el más pequeño y el más fácil de instalar?

Editar:
La recomendación general es usar ODP.Net. Ahora, alguien puede explicar o señalar para responder sobre las diferencias entre los paquetes de instalación del cliente. He encontrado 3 clientes diferentes para Oracle 11g:

  • cliente de Oracle - paquete de controladores de cliente que se incluye como parte de la instalación de bases de datos
  • ODAC - Oracle data access components, contiene una gran cantidad de cosas, entre ellas se encuentran ODP.Net y Oracle Instant Client
  • Oracle Instant Client que también contiene muchas cosas, incluyendo ODP.Net

Así que, ¿cuál de ellos es suficiente para el desarrollo? La documentación de Oracle es muy detallada, pero no dice nada sobre las diferencias entre esos paquetes de clientes. Me gustaría ir con el más pequeño (cliente instantáneo). ¿Es la mejor opción?

Edición 2:
estoy usando .Net 3.5

+0

¿Qué versión de .net ¿Está utilizando actualizados? – VinPepe

+1

También estoy interesado en la respuesta a la pregunta n. ° 4. – Greg

Respuesta

6

Para conectar C# a Oracle necesita un proveedor de datos para .net. Este puede ser uno de los siguientes:

  • ODP.Net (Oracle)
  • System.Data.OracleClient (Microsoft)
  • ODBC (Oracle)
  • OLEDB (Oracle)
  • DataDirect ADO proveedor de datos .NET para Oracle (DataDirect)
  • puede haber algún otro proveedor

Todos los de este proveedor de datos necesitan un cliente Oracle instalado. No hay una biblioteca independiente como jdbc14.jar como en java.Tienes 2 opciones que despliegan un cliente de Oracle:

  • cliente completo (puede ser desde la instalación de bases de datos)
  • cliente instantánea

ODP.Net, ODBC, OLEDB son parte del cliente completo. Esta es la forma "difícil" porque se debe ejecutar un proceso de instalación en cada cliente que ejecuta su software. Aquí es donde se colocan más megabytes en el cliente.
El instant client se proporciona en diferentes paquetes. Esta es la forma más pequeña para la implementación de un cliente Oracle.

Sugeriría usar ODP.Net con Oracle Instant Client, porque es fácil de implementar y muy, muy liviano.

¿Qué paquetes de clientes inmediatos sí es necesario:

  • versión recogida 11.1.0.6.0 (o más reciente, donde se proporciona ODAC)
  • paquete Instant Client - Básico (si necesita apoyo en el idioma completo)
  • paquete Instant Client - ODAC

Hay un montón de artículos sobre stackoverflow acerca de la implementación de cliente de Oracle instantánea con aplicaciones C#.

EDIT: enlaces y versiones

+0

Por Oracle Instance Client ¿te refieres a Instant Client? –

+0

Sí, lo hice. Editado. – Christian13467

2

Tal vez me equivoque, pero ADO.NET han integrado el soporte para Oracle. tal vez para las versiones anteriores ...

+0

System.Data.OracleClient también es un poco lento y Microsoft lo privará. – tuinstoel

+0

Sí, ya veo. Gracias a este hilo! –

7

Microsoft será el espacio de nombres deprecateSystem.Client.OracleClient así que creo que será mejor utilizar ODP.NET. Asegúrese de descargar la última (ODP.NET 11g) ya que las versiones anteriores tenían algunos problemas.

+0

También hay diferencias * significativas * en las capacidades funcionales disponibles entre ODP.NET y la biblioteca OracleClient (ahora en desuso). ODP.NET proporciona mucho mejor acceso a las características básicas y avanzadas de la base de datos Oracle. – LBushkin

+0

¿Por qué la EM está desaprobando eso? – JonH

+0

@JonH El equipo de ADO.NET habló sobre esto aquí: http://blogs.msdn.com/adonet/archive/2009/06/15/system-data-oracleclient-update.aspx –

2

Creo que odbc es demasiado lento. System.Data.OracleClient también es un poco lento y Microsoft lo dejará en desuso.

Puede usar el proveedor de devart, hay una versión gratuita. Es fácil de implementar. Consulte aquí http://www.devart.com/dotconnect/oracle/ Sí admite el marco de entidad.

Odp.net es rápido pero no es compatible con el marco de entidad y no es muy fácil de implementar.

+0

Gracias. ¿Puede comentar sobre las diferencias entre las instalaciones del cliente Oracle que mencioné después de la marca "Editar"? – zendar

1

Realmente no puedo decir las diferencias entre las soluciones que proporcionó, pero siempre utilicé los Oracle Data Access Components de Oracle y siempre funcionó a la perfección.Se puede encontrar aquí: ODAC for Visual Studio

Lo que está claro es que una biblioteca desarrollada por Oracle en .NET Framework será mucho más precisa que una biblioteca desarrollada por una empresa externa a Oracle. Por ejemplo, con respecto a las excepciones lanzadas al acceder a una base de datos Oracle, serán mucho más útiles si la biblioteca ha sido desarrollada por el equipo de desarrollo de Oracle ya que tienen conocimientos adicionales sobre Oracle DB.

Lo malo es que tendrás una dependencia, problema que no tendrás que superar si eliges utilizar .NET System.Data.OracleClient.

Espero que esto ayude. Saludos.


EDIT: El paquete contiene ODAC PAO y Oracle Developer Tools

+1

Gracias. ¿Sabes quizás la diferencia entre los paquetes de cliente ODAC y Instant? – zendar

+0

Parece que Oracle Instant Client no tiene nada que ver con .NET, solo pertenece a las aplicaciones de Oracle Database. Vea más allí: http://www.oracle.com/technology/tech/oci/instantclient/index.html – Ucodia

4

ODP.NET es el mejor proveedor de acceso a base de datos Oracle, sobre todo - porque es el más nativo, que lo diferencia de ODBC por el siguiente:

  • mejor rendimiento
  • ODP.NET proporciona acceso a la funcionalidad avanzada de Oracle, no está disponible a través de ODBC .NET
  • ODP.NET no utiliza un puente de acceso a datos adicional.

ODBC también se puede utilizar, pero como se mencionó anteriormente, va a ser más lento y tener una funcionalidad limitada.

Para hacer que el trabajo ODP.NET necesita el software que se enumera aquí (y que incluye cliente de Oracle): http://www.oracle.com/technology/tech/windows/odpnet/faq.html#install

Espero que esto ayude!

+0

Gracias. ¿Puedes comentar la segunda parte de la pregunta, después de "Editar"? Necesito ayuda para elegir el "mejor" paquete de cliente. – zendar

+0

De los que mencionaste necesitarás el paquete ODAC. Incluye ODP.NET y el cliente. Ambos son necesarios para conectarse al Db. – Alexander

1

ODP.NET es un proveedor nativo para acceder a Oracle DB. Y por lo tanto, debería optimizarse mejor para Oracle db. Además, hay una función de Oracle, como el tipo REF CURSOR, que no son compatibles con MS ODBC, pero son compatibles con ODP.NET. Puede descargar ODAC, que también incluye ODP.NET, en el sitio web www.aracle.com.