visual studio odp net framework for data conectar con 11g oracle entity-framework app-config odp.net dataprovider
winnt_12c_client32.zipwinx64_12c_client.zipenlace de descarga para ODAC v12c administrado versión 1win32_11gR2_client.zipwin64_11gR2_client.zipODP.NET_Managed_1120350_Beta.zipODAC112030Xcopy_32bit.zipODAC112030Xcopy_64bit.zip

oracle - studio - Implementación y configuración de ODP.NET para funcionar sin instalación con Entity Framework



odp.net visual studio 2017 (3)

¿Cómo implementa y configura ODP.NET para que funcione sin instalación con Entity Framework?

A. ¿Cómo implementar y configurar Oracle.DataAccess.Client?

B. ¿Cómo implementar y configurar Oracle.ManagedDataAccess.Client?

C. ¿Qué necesita hacer para hacer construcciones con EDMX con Oracle SSDLs?

D. ¿Qué necesita instalar para el soporte de diseñador?


Esta respuesta resume (con suerte) todos los pasos requeridos, muchos de los cuales se documentaron en varios lugares en línea y podrían ahorrarle horas a alguien de Google.

A. Cómo implementar y configurar Oracle.DataAccess.Client.

A.1. Descargue ODAC112030Xcopy_64bit.zip u ODAC112030Xcopy_32bit.zip .

A.1.1. Extraiga el contenido de las siguientes carpetas dentro del archivo zip en la carpeta bin / setup de su aplicación / host:

A.1.1.1. instantclient_11_2

A.1.1.2. odp.net4 / bin /

A.1.1.3. odp.net4 / odp.net / bin /

A.1.1.4. odp.net4 / odp.net / PublisherPolicy / 4 /

A.2. Agregue la siguiente sección al comienzo de su aplicación / host app.config / web.config (si ya tiene un elemento configSections, agregue la sección a él:

<configSections> <section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> </configSections>

A.3. Agregue las siguientes secciones al final de su aplicación / host app.config / web.config:

A.4. Desde la carpeta de ODAC112030Xcopy Ejecutar:

configure.bat odp.net4 somename

Recomiendo usar oraclehome112030_32 o oraclehome112030_64 como el "somename" de arriba.

<system.data> <DbProviderFactories> <!-- Remove in case this is already defined in machine.config --> <remove invariant="Oracle.DataAccess.Client" /> <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/> </DbProviderFactories> </system.data> <oracle.dataaccess.client> <settings> <add name="bool" value="edmmapping number(1,0)" /> <add name="byte" value="edmmapping number(3,0)" /> <add name="int16" value="edmmapping number(5,0)" /> <add name="int32" value="edmmapping number(10,0)" /> <add name="int64" value="edmmapping number(19,0)" /> <add name="int16" value="edmmapping number(38,0)" /> <add name="int32" value="edmmapping number(38,0)" /> <add name="int64" value="edmmapping number(38,0)" /> </settings> </oracle.dataaccess.client>



B. Cómo implementar y configurar Oracle.ManagedDataAccess.Client.

B.1. Descargar ODP.NET_Managed_1120350_Beta.zip

B.1.1. Extraiga los siguientes archivos en la carpeta bin / setup de su aplicación / host.

B.1.1.1. Oracle.ManagedDataAccess.dll

B.1.1.2. x64 / Oracle.ManagedDataAccessDTC.dll o x86 / Oracle.ManagedDataAccessDTC.dll

B.2. Agregue la siguiente sección al comienzo de su aplicación / host app.config / web.config (si ya tiene un elemento configSections, agregue la sección a él:

<configSections> <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.112.3.50, Culture=neutral, PublicKeyToken=89b483f429c47342" /> </configSections>

B.3. Agregue las siguientes secciones al final de su aplicación / host app.config / web.config:

<system.data> <DbProviderFactories> <!-- Remove in case this is already defined in machine.config --> <remove invariant="Oracle.ManagedDataAccess.Client" /> <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.112.3.50, Culture=neutral, PublicKeyToken=89b483f429c47342" /> </DbProviderFactories> </system.data> <oracle.manageddataaccess.client> <version number="*"> <settings> <!-- Set this path if you are using TNS aliases as connection strings (not recommended) --> <!-- Instead you can use "SERVER_NAME:PORT/SERVICE_NAME" as your data source --> <setting name="TNS_ADMIN" value="C:/"/> </settings> <edmMappings> <edmMapping dataType="number"> <add name="bool" precision="1"/> <add name="byte" precision="2" /> <add name="int16" precision="5" /> </edmMapping> </edmMappings> </version> </oracle.manageddataaccess.client>



C. Para la construcción:

C.1. Agregue esta sección a la aplicación app.config de su EDMX:

(No he intentado esto con Oracle. Administrado DataAccess.Client aún)

<oracle.dataaccess.client> <settings> <add name="bool" value="edmmapping number(1,0)" /> <add name="byte" value="edmmapping number(3,0)" /> <add name="int16" value="edmmapping number(5,0)" /> <add name="int32" value="edmmapping number(10,0)" /> <add name="int64" value="edmmapping number(19,0)" /> <add name="int16" value="edmmapping number(38,0)" /> <add name="int32" value="edmmapping number(38,0)" /> <add name="int64" value="edmmapping number(38,0)" /> </settings> </oracle.dataaccess.client>

C.2. Agregue un archivo denominado Oracle.xsd al mismo conjunto con el contenido:

<?xml version="1.0" encoding="utf-8"?> <xs:schema id="odpnetappconfigmappings" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="addtype"> <xs:attribute name="name" type="xs:string" /> <xs:attribute name="value" type="xs:string" /> </xs:complexType> <xs:complexType name="settingstype"> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:element name="add" type="addtype" /> </xs:sequence> </xs:complexType> <xs:complexType name="oracledataaccessclienttype"> <xs:sequence minOccurs="0" maxOccurs="1"> <xs:element name="settings" type="settingstype" /> </xs:sequence> </xs:complexType> <xs:element name="oracle.dataaccess.client" type="oracledataaccessclienttype" /> </xs:schema>

C.3. Agregue el XSD anterior a la lista de esquemas de app.config anterior.

C.4. Si obtiene errores para las asignaciones booleanas durante la compilación aunque la compilación tenga éxito, agregue las asignaciones de app.config a devenv.exe.config de Visual Studio.

C.5. Si desea utilizar Oracle.ManagedDataAccess.Client, edite manualmente el atributo de proveedor de datos en el EDMX antes de la compilación (no lo he intentado) o edítelo antes de la creación de Context en el tiempo de ejecución y cargue MSSL desde la copia editada en lugar de desde recurso (esto parece funcionar y también uso un truco similar para elegir qué MSSL cargar para diferentes proveedores de DB).



D. Para soporte de diseñador:

D.1. Descargue win64_11gR2_client.zip o win32_11gR2_client.zip e instálelo.

D.1.1. Seleccione "Administrador" como tipo de instalación.

D.2. descarga ODT e instala.



Intenté esto (A y B) en una máquina en blanco (VM) con Windows 7 x64.

Este procedimiento no parece funcionar con la versión x86 de Oracle.DataAccess.Client en Windows x64.

El procedimiento parece funcionar con la versión x64 de Oracle.DataAccess.Client en Windows x64 y con ambas versiones de Oracle.ManagedDataAccess.Client.



Actualizar:

Migración de Oracle.DataAccess.Client a Oracle.ManagedDataAccess.Client v12.1.0 (12c) de la manera más fácil:

Editar: enlace de descarga para ODAC v12c administrado versión 1 .


Si descarga winx64_12c_client.zip o winnt_12c_client32.zip , los extrae e instala (instalación completa (admin) o instalación personalizada con componente ODP.NET, la instalación del cliente no incluye este componente) en una VM, encontrará la carpeta /odp.net/managed en la carpeta "cliente".

Dentro de esta carpeta encontrará common/Oracle.ManagedDataAccess.dll , x86/Oracle.ManagedDataAccessDTC.dll y x64/Oracle.ManagedDataAccessDTC.dll .

Copie Oracle.ManagedDataAccess.dll en su directorio bin y copie la plataforma correcta de Oracle.ManagedDataAccessDTC.dll en su directorio bin x86 / x64 o, por cliente, instale la plataforma correcta de esa DLL específica en el GAC, manteniendo su contenedor como AnyCPU.

La versión de ensamblado de la nueva DLL es 4.121.1.0 , PublicKeyToken parece ser la misma (no lo verificó, pero funcionó sin que yo lo cambiara).

Como antes, agregue esta sección a su app.config configuration / configSections (al comienzo del archivo app.config):

<configuration> <configSections>

Sección:

<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />

y cerrar con:

</configSections>

En system.data/DbProviderFactories (después de lo anterior):

<system.data> <DbProviderFactories>

añadir:

<remove invariant="Oracle.DataAccess.Client" /> <remove invariant="Oracle.ManagedDataAccess.Client" />

Para asegurarse de que no haya ningún conflicto en su machine.config

Luego añade:

<add name="ODP.NET, Managed Driver" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />

y cerrar con:

</DbProviderFactories> </system.data>

Observe que utilicé Oracle.DataAccess.Client como el invariante en lugar del Oracle.DataAccess.Client oficial. Esto se debe a que no quiero cambiar todos mis EDMX y recompilarlos para que usen el nuevo cliente administrado en lugar del antiguo no administrado.

A continuación, agregue la siguiente sección (después de lo anterior) a su app.config

<oracle.manageddataaccess.client> <version number="*"> <edmMappings> <edmMapping dataType="number"> <add name="bool" precision="1"/> <add name="byte" precision="2" /> <add name="int16" precision="5" /> </edmMapping> </edmMappings> </version> </oracle.manageddataaccess.client>

Esto pasó mi prueba inicial, aunque todavía no lo he probado a fondo.