Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wdrażanie i konfigurowanie ODP.NET do pracy bez instalacji z Entity Framework

Ta odpowiedź podsumowuje (miejmy nadzieję) wszystkie wymagane kroki, z których wiele zostało udokumentowanych w różnych miejscach online i może zaoszczędzić komuś godzin Googlingu.

A. Jak wdrożyć i skonfigurować Oracle.DataAccess.Client.

A.1. Pobierz ODAC112030Xcopy_64bit.zip lub ODAC112030Xcopy_32bit.zip.

A.1.1. Wyodrębnij zawartość następujących folderów z pliku zip do folderu bin/setup aplikacji/hosta:

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\Polityka wydawców\4\

A.2. Dodaj następującą sekcję na początku pliku app.config/web.config aplikacji/hosta (jeśli masz już element configSections, dodaj do niego sekcję:

<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. Dodaj następujące sekcje na końcu pliku app.config/web.config aplikacji/hosta:

A.4. Z folderu ODAC112030Xcopy Uruchom:

configure.bat odp.net4 somename

Zalecam używanie oraclehome112030_32 lub oraclehome112030_64 jako "somename" powyżej.

<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. Jak wdrożyć i skonfigurować Oracle.ManagedDataAccess.Client.

B.1. Pobierz ODP.NET_Managed_1120350_Beta.zip

B.1.1. Wypakuj następujące pliki do folderu bin/setup aplikacji/hosta.

B.1.1.1. Oracle.ManagedDataAccess.dll

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

B.2. Dodaj następującą sekcję na początku pliku app.config/web.config aplikacji/hosta (jeśli masz już element configSections, dodaj do niego sekcję:

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

B.3. Dodaj następujące sekcje na końcu pliku app.config/web.config aplikacji/hosta:

<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. Do budowy:

C.1. Dodaj tę sekcję do app.config zestawu EDMX:

(Nie próbowałem tego z Oracle.Zarządzane DataAccess.Client jeszcze)

<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. Dodaj plik o nazwie Oracle.xsd do tego samego zestawu z zawartością:

<?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. Dodaj powyższy XSD do powyższej listy schematów app.config.

C.4. Jeśli podczas kompilacji pojawiają się błędy dla mapowań logicznych, mimo że kompilacja się powiodła, dodaj mapowania app.config do devenv.exe.config programu Visual Studio.

C.5. Jeśli chcesz użyć Oracle.ManagedDataAccess.Client, edytuj atrybut dostawcy danych w EDMX ręcznie przed kompilacją (nie próbowałem tego) lub edytuj go przed utworzeniem kontekstu w czasie wykonywania i załaduj MSSL z edytowanej kopii zamiast z zasobów (wydaje się, że to działa i używam podobnej sztuczki, aby wybrać MSSL do załadowania dla różnych dostawców bazy danych).



D. Wsparcie projektanta:

D.1. Pobierz win64_11gR2_client.zip lub win32_11gR2_client.zip i zainstaluj.

D.1.1. Wybierz „Administrator” jako typ instalacji.

D.2. pobierz ODT i zainstaluj.



Próbowałem tego (A i B) na pustej maszynie (VM) z Windows 7 x64.

Ta procedura nie działa z wersją Oracle.DataAccess.Client x86 w systemie Windows x64.

Wydaje się, że procedura działa z wersją Oracle.DataAccess.Client x64 w systemie Windows x64 oraz z obiema wersjami Oracle.ManagedDataAccess.Client.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak stworzyć tabelę w Oracle SQL Developer?

  2. Perl DBD::Instalacja modułu Oracle

  3. Konfigurowanie środowiska programistycznego do nauki języka PL/SQL

  4. PL/SQL Online MCQ Quiz

  5. Pierwsze kroki z Oracle SQL Developer na MacOSX