sql >> Databasteknik >  >> RDS >> Oracle

Distribuera och konfigurera ODP.NET för att fungera utan installation med Entity Framework

Det här svaret sammanfattar (förhoppningsvis) alla steg som krävs, av vilka många dokumenteras på olika ställen online och kan spara någon timmars googling.

A. Hur man distribuerar och konfigurerar Oracle.DataAccess.Client.

A.1. Ladda ner ODAC112030Xcopy_64bit.zip eller ODAC112030Xcopy_32bit.zip.

A.1.1. Extrahera innehållet i följande mappar i zip-filen till programmets/värdens bin/setup-mapp:

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. Lägg till följande avsnitt i början av programmets/värdens app.config/web.config (om du redan har ett configSections-element, lägg till avsnittet i det:

<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. Lägg till följande avsnitt i slutet av din applikations/värds app.config/web.config:

A.4. Från ODAC112030Xcopys mapp Kör:

configure.bat odp.net4 somename

Jag rekommenderar att du använder oraclehome112030_32 eller oraclehome112030_64 som "somename" ovan.

<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. Hur man distribuerar och konfigurerar Oracle.ManagedDataAccess.Client.

B.1. Ladda ner ODP.NET_Managed_1120350_Beta.zip

B.1.1. Extrahera följande filer till din applikations/värdens bin/setup-mapp.

B.1.1.1. Oracle.ManagedDataAccess.dll

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

B.2. Lägg till följande avsnitt i början av programmets/värdens app.config/web.config (om du redan har ett configSections-element, lägg till avsnittet i det:

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

B.3. Lägg till följande avsnitt i slutet av din applikations/värds 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. För byggnad:

C.1. Lägg till det här avsnittet i din EDMX-sammansättnings app.config:

(Har inte testat detta med Oracle.Managed DataAccess.Client ännu)

<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. Lägg till en fil med namnet Oracle.xsd till samma sammansättning med innehållet:

<?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. Lägg till ovanstående XSD till ovanstående app.configs lista över scheman.

C.4. Om du får felmeddelanden för booleska mappningar under bygget trots att konstruktionen lyckas, lägg till app.config-mappningarna till Visual Studios devenv.exe.config.

C.5. Om du vill använda Oracle.ManagedDataAccess.Client, redigera antingen dataleverantörsattributet i EDMX manuellt innan byggandet (jag har inte provat detta) eller redigera det innan du skapar kontexten vid körning och ladda MSSL från redigerad kopia istället för från resurs (detta verkar fungera och jag använder också ett liknande knep för att välja vilken MSSL som ska laddas för olika DB-leverantörer).



D. För designersupport:

D.1. Ladda ner win64_11gR2_client.zip eller win32_11gR2_client.zip och installera.

D.1.1. Välj "Administratör" som typ av installation.

D.2. ladda ner ODT och installera.



Jag provade detta (A och B) på en tom maskin (VM) med Windows 7 x64.

Den här proceduren verkar inte fungera med x86-versionen av Oracle.DataAccess.Client på Windows x64.

Proceduren verkar fungera med x64-versionen av Oracle.DataAccess.Client på Windows x64 och med båda versionerna av Oracle.ManagedDataAccess.Client.



  1. 12c Flytta datafiler online

  2. MySQL Database Service – Nya HeatWave-innovationer

  3. T-SQL:Tar bort alla dubbletter av rader men behåller en

  4. Lägga till en inledande nolla till vissa värden i kolumn i MySQL