sql >> Database teknologi >  >> RDS >> Oracle

Implementering og konfiguration af ODP.NET til at fungere uden installation med Entity Framework

Dette svar opsummerer (forhåbentlig) alle de nødvendige trin, hvoraf mange er dokumenteret forskellige steder online og kan spare nogen for timers google.

A. Sådan installeres og konfigureres Oracle.DataAccess.Client.

A.1. Download ODAC112030Xcopy_64bit.zip eller ODAC112030Xcopy_32bit.zip.

A.1.1. Udpak indholdet af følgende mapper i zip-filen til din applikation/værts bin/setup-mappe:

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. Tilføj følgende sektion til begyndelsen af ​​din applikations/værts app.config/web.config (hvis du allerede har et configSections-element, skal du tilføje sektionen til 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. Tilføj følgende sektioner til slutningen af ​​din applikations/værts app.config/web.config:

A.4. Fra ODAC112030Xcopy's mappe Kør:

configure.bat odp.net4 somename

Jeg anbefaler at bruge oraclehome112030_32 eller oraclehome112030_64 som "somename" ovenfor.

<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. Sådan implementeres og konfigureres Oracle.ManagedDataAccess.Client.

B.1. Download ODP.NET_Managed_1120350_Beta.zip

B.1.1. Udpak følgende filer i din applikation/værts bin/setup-mappe.

B.1.1.1. Oracle.ManagedDataAccess.dll

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

B.2. Tilføj følgende sektion til begyndelsen af ​​din applikations/værts app.config/web.config (hvis du allerede har et configSections-element, skal du tilføje sektionen til 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. Tilføj følgende sektioner til slutningen af ​​din applikations/værts 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. Til bygning:

C.1. Tilføj denne sektion til din EDMX's assembly's app.config:

(Har ikke prøvet dette med Oracle.Administreret DataAccess.Client endnu)

<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. Tilføj en fil med navnet Oracle.xsd til den samme samling med indholdet:

<?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. Tilføj ovenstående XSD til ovenstående app.configs liste over skemaer.

C.4. Hvis du får fejl for booleske tilknytninger under build, selvom build lykkes, skal du tilføje app.config-tilknytningerne til Visual Studios devenv.exe.config.

C.5. Hvis du vil bruge Oracle.ManagedDataAccess.Client, skal du enten redigere dataudbyderattributten i EDMX'en manuelt før opbygning (jeg har ikke prøvet dette) eller redigere den før oprettelse af kontekst på kørselstidspunktet og indlæse MSSL fra redigeret kopi i stedet for fra ressource (dette ser ud til at virke, og jeg bruger også et lignende trick til at vælge, hvilken MSSL der skal indlæses for forskellige DB-udbydere).



D. For designersupport:

D.1. Download win64_11gR2_client.zip eller win32_11gR2_client.zip og installer.

D.1.1. Vælg "Administrator" som installationstype.

D.2. download ODT og installer.



Jeg prøvede dette (A og B) på en tom maskine (VM) med Windows 7 x64.

Denne procedure ser ikke ud til at fungere med x86-versionen af ​​Oracle.DataAccess.Client på Windows x64.

Proceduren ser ud til at fungere med x64-versionen af ​​Oracle.DataAccess.Client på Windows x64 og med begge versioner af Oracle.ManagedDataAccess.Client.



  1. GROUP_CONCAT med grænse

  2. Rails udefineret metode til ActiveRecord_Associations_CollectionProxy

  3. Brug af indekser i SQL Server-hukommelsesoptimerede tabeller

  4. 11 måder at finde dublerede rækker, mens du ignorerer den primære nøgle i SQLite