sql >> Database >  >> RDS >> Oracle

ODP.NET implementeren en configureren om te werken zonder installatie met Entity Framework

Dit antwoord vat (hopelijk) alle benodigde stappen samen, waarvan er vele op verschillende plaatsen online zijn gedocumenteerd en iemand uren Googlen kan besparen.

A. Hoe Oracle.DataAccess.Client te implementeren en configureren.

A.1. Download ODAC112030Xcopy_64bit.zip of ODAC112030Xcopy_32bit.zip.

A.1.1. Pak de inhoud van de volgende mappen in het zipbestand uit in de map bin/setup van uw toepassing/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. Voeg de volgende sectie toe aan het begin van app.config/web.config van je applicatie/host (als je al een configSections-element hebt, voeg je de sectie eraan toe:

<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. Voeg de volgende secties toe aan het einde van app.config/web.config van uw applicatie/host:

A.4. Vanuit de ODAC112030Xcopy-map Uitvoeren:

configure.bat odp.net4 somename

Ik raad aan om oraclehome112030_32 of oraclehome112030_64 te gebruiken als de "somename" hierboven.

<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. Hoe Oracle.ManagedDataAccess.Client te implementeren en configureren.

B.1. ODP.NET_Managed_1120350_Beta.zip downloaden

B.1.1. Pak de volgende bestanden uit in de map bin/setup van uw toepassing/host.

B.1.1.1. Oracle.ManagedDataAccess.dll

B.1.1.2. x64\Oracle.ManagedDataAccessDTC.dll of x86\Oracle.ManagedDataAccessDTC.dll

B.2. Voeg de volgende sectie toe aan het begin van app.config/web.config van je applicatie/host (als je al een configSections-element hebt, voeg je de sectie eraan toe:

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

B.3. Voeg de volgende secties toe aan het einde van app.config/web.config van uw applicatie/host:

<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. Voor het bouwen:

C.1. Voeg deze sectie toe aan de app.config van uw EDMX-assemblage:

(Ik heb dit niet geprobeerd met Oracle.Beheerd DataAccess.Client nog)

<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. Voeg een bestand met de naam Oracle.xsd toe aan dezelfde assembly met de inhoud:

<?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. Voeg de bovenstaande XSD toe aan de bovenstaande app.config-lijst met schema's.

C.4. Als u tijdens het bouwen fouten krijgt voor booleaanse toewijzingen, ook al is het bouwen gelukt, voeg dan de app.config-toewijzingen toe aan devenv.exe.config van Visual Studio.

C.5. Als u Oracle.ManagedDataAccess.Client wilt gebruiken, bewerk dan het gegevensproviderkenmerk in de EDMX handmatig voorafgaand aan het bouwen (ik heb dit niet geprobeerd) of bewerk het voorafgaand aan het maken van Context tijdens runtime en laad MSSL van bewerkte kopie in plaats van van bron (dit lijkt te werken en ik gebruik ook een soortgelijke truc om te kiezen welke MSSL moet worden geladen voor verschillende DB-providers).



D. Voor ondersteuning van ontwerpers:

D.1. Download win64_11gR2_client.zip of win32_11gR2_client.zip en installeer.

D.1.1. Selecteer "Beheerder" als type installatie.

D.2. download ODT en installeer.



Ik heb dit geprobeerd (A en B) op een lege machine (VM) met Windows 7 x64.

Deze procedure lijkt niet te werken met de x86-versie van Oracle.DataAccess.Client op Windows x64.

De procedure lijkt te werken met de x64-versie van Oracle.DataAccess.Client op Windows x64 en met beide versies van Oracle.ManagedDataAccess.Client.



  1. Grondbeginselen van tabeluitdrukkingen, deel 6 – Recursieve CTE's

  2. Hoe orakelindexen kiezen en optimaliseren?

  3. Grootte van partitietabel in PostgreSQL 9.0

  4. Werken met niet-ASCII JDBC-gegevens in Talend