¿Cómo uso Oracle desde .NET?

Desafortunadamente, estoy tratando de usar Oracle desde .NET y es como volver a 1997. Explicar las cosas correctamente es un signo de debilidad y las variables de registro y entorno parecen destacar.

Así que aquí está lo lejos que he llegado.

Llené un gran formulario sobre mi vida en Oracle.com y descargué el

Cliente de instancia ODBC para Windows de 64 bits, 11.2.0.3.0 y lo descomprimió en una carpeta.Cliente instantáneo básico de Windows de 64 bits, 11.2.0.3.0 y lo descomprimió en la misma carpeta que arriba.

Ejecuté el archivo .exe de instalación (no MSI, recuerda que esto es 1997).

Agregué una variable de entorno TNS_NAMES que apunta al archivo corporativo TNSNames.ora en un recurso compartido de red y configuré un DSN rápido en el Panel de control y ejecuté la prueba. ¡Funcionó!

Luego descargué la versión XCOPY de la última versión de ODP.NET para .NET 4.0 y la copié en mi carpeta de Dependencias en mi área de trabajo de control de fuente.

Agregué una referencia de mi proyecto aDependencias \ odp.net4 \ odp.net \ bin \ 4 \ Oracle.DataAccess.dll

He leído que necesito dejarle saber a ODP.NET administrado dónde puede encontrar sus bibliotecas de Oracle no administradas, que supongo esDependencias \ odp.net4 \ bin \ OraOps11w.dll ¿Pero podría ser algún otro binario de Oracle en algún lugar?

Ahora estoy configurando un parámetro de archivo de configuración llamado DllPath. Lamentablemente, los documentos de Oracle parecen no darse cuenta de que los archivos de configuración .NET necesitan que sus secciones se conecten a la sección configSections.

Aquí está la sección del archivo de configuración.

<oracle.dataaccess.client>
  <add key="DllPath" value="D:\Trunk\Dependencies\odp.net4\bin" />
</oracle.dataaccess.client>

¿Qué pasa en la sección de configuración? Los pocos hilos que he encontrado en este dan un ejemplo y luego dicen "No sé qué tipo = debería ser", que es el bit principal.

¿Alguien me puede aconsejar? ¿Alguien sabe un enlace a una Guía de Dummies para consultar una vista de Oracle desde .NET?

¿Hay algo que pueda hacer en 1997 para evitar tener que usar Oracle en 2012?

ACTUALIZAR

Sólo una actualización rápida. He copiado OraOps11w.dll en mi carpeta de la bandeja de salida y eliminé cualquier cambio en el archivo web.config que había agregado anteriormente.

Ahora me sale el siguiente error, que estoy investigando.

No se pudo cargar el archivo o el ensamblaje 'Oracle.DataAccess' o una de sus dependencias. Se intentó cargar un programa con un formato incorrecto.

Algunos otros foros hablan sobre el registro de Oracle.DataAccess.dll en el GAC, que estoy dispuesto a evitar, y no puedo ver cuál sería la diferencia de todos modos, pero lo intentaré.

ACTUALIZACIÓN 2

El registro de la biblioteca Oracle.DataAccess.dll en el GAC no hizo ninguna diferencia y lo he eliminado.

El final de la semana laboral está sobre mí y tengo que tomar un tren, pero he enviado un correo electrónico a otro equipo de desarrolladores aquí y espero que hayan luchado en esta batalla antes (y no haya usado extractos nocturnos como todos los demás).

ACTUALIZACIÓN 3

Esta mañana descargué y configuré IIS Express 8.0 RC, que tiene una versión de 64 bits. La versión de 64 bits no es compatible con VS2010, por lo que debe ejecutarse desde la línea de comandos. Esto fue bastante simple, al buscar en el Administrador de tareas, pude ver qué línea de comandos usa VS para iisexpress.exe * 32.

Desafortunadamente, recibo este error cuando navego a mi sitio alojado por IIS Express de 64 bits.

El controlador "ExtensionlessUrl-Integrated-4.0" tiene un módulo incorrecto "ManagedPipelineHandler" en su lista de módulos

Este es un problema que está demasiado lejos en esta línea de investigación, así que intentaré usar la versión de 32 bits de ODP.NET.

ACTUALIZACIÓN 4

Descargué la instalación completa de la versión de 32 bits, pero me asusté cuando vi el Universal Installer de Oracle. Parece demasiado 90 para confiar con mi preciosa caja de desarrollo. Así que estoy usando el cliente 'XCopy' de 32 bits, esto me permite abrir la página de inicio de mi sitio, así que las referencias están funcionando. Gracias por aquellos que sugirieron un problema 32/64 de desajuste de arquitectura.

Ahora estoy investigando este error al crear una instancia de una nueva OracleConnection.

El proveedor no es compatible con la versión del cliente de Oracle.

Actualización 5 Creo que lo he hecho.

Así que descargué el último "cliente instantáneo" de 11 bits de 11 bits y lo puse en mi carpeta \ Dependencias para el código base de la solución. Agregué esta carpeta a la variable de entorno del sistema% PATH% y también colgué el archivo OraOps11w.dll allí.

Finalmente, _oracleConnection = ¡la nueva OracleConnection (connectionString) no se lanza! Ahora necesito asegurarme de que tengo una botella de Laphroaig en el escritorio cuando vengo a desplegar para pinchar.

Entonces, para resumir, para IIS Express 7.5 (que es un proceso de 32 bits) en Windows 7, 64:

Descargue y extraiga el "Cliente instantáneo" 11g de 11 bits a alguna carpeta y agregue esta ubicación a su RUTA. Oci.dll es la principal biblioteca no administrada del lado del cliente de Oracle.

Descargue y extraiga el ODP.NET de 32 bits a alguna carpeta.

Copie el OraOps11w.dll a la carpeta principal en la que reside el cliente instantáneo (arriba).

Agregue una variable de entorno TNS_ADMIN que apunta a una carpeta en la que reside el archivo de texto TNSNames.ora. Esto es como un archivo de hosts y asigna nombres de servicio de Oracle a los nombres de host del servidor.

Cierre y vuelva a abrir Visual Studio para asegurarse de recoger las nuevas variables de entorno y agregue una referencia al ensamblado administrado Oracle.DataAccess.dll en su carpeta ODP.NET.

Eso debería ser. Suena bastante simple cuando sabes cómo.

ACTUALIZACIÓN 5.1

Investigando el error a continuación, que originalmente no informé porque estaba seguro de que era un problema de firewall. La empresa en la que estoy tiene dos en cada estación de trabajo, pero acabo de abrir un socket en bruto para el servidor Oracle, por lo que no puede ser.

ORA-12541: TNS: sin oyente

Respuestas a la pregunta(5)

Su respuesta a la pregunta