Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Menyebarkan dan Mengonfigurasi ODP.NET agar berfungsi tanpa instalasi dengan Entity Framework

Jawaban ini merangkum (semoga) semua langkah yang diperlukan, banyak di antaranya didokumentasikan di berbagai tempat online dan dapat menghemat waktu Google seseorang.

A. Cara menyebarkan dan mengonfigurasi Oracle.DataAccess.Client.

A.1. Unduh ODAC112030Xcopy_64bit.zip atau ODAC112030Xcopy_32bit.zip.

A.1.1. Ekstrak konten folder berikut dalam file zip ke folder bin/setup aplikasi/host Anda:

A.1.1.1. klien instan_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. Tambahkan bagian berikut ke awal app.config/web.config aplikasi/host Anda (jika Anda sudah memiliki elemen configSections, tambahkan bagian ke dalamnya:

<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. Tambahkan bagian berikut ke akhir app.config/web.config aplikasi/host Anda:

A.4. Dari folder ODAC112030Xcopy Jalankan:

configure.bat odp.net4 somename

Saya sarankan menggunakan oraclehome112030_32 atau oraclehome112030_64 sebagai "somename" di atas.

<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. Cara menyebarkan dan mengonfigurasi Oracle.ManagedDataAccess.Client.

B.1. Unduh ODP.NET_Managed_1120350_Beta.zip

B.1.1. Ekstrak file berikut ke folder bin/setup aplikasi/host Anda.

B.1.1.1. Oracle.ManagedDataAccess.dll

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

B.2. Tambahkan bagian berikut ke awal app.config/web.config aplikasi/host Anda (jika Anda sudah memiliki elemen configSections, tambahkan bagian ke dalamnya:

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

B.3. Tambahkan bagian berikut ke akhir app.config/web.config aplikasi/host Anda:

<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. Untuk bangunan:

C.1. Tambahkan bagian ini ke app.config perakitan EDMX Anda:

(Belum mencoba ini dengan Oracle.Dikelola DataAccess.Client belum)

<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. Tambahkan file bernama Oracle.xsd ke Majelis yang sama dengan konten:

<?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. Tambahkan XSD di atas ke daftar Skema app.config di atas.

C.4. Jika Anda mendapatkan kesalahan untuk pemetaan boolean selama build meskipun build berhasil, tambahkan pemetaan app.config ke devenv.exe.config Visual Studio.

C.5. Jika Anda ingin menggunakan Oracle.ManagedDataAccess.Client, edit atribut penyedia data di EDMX secara manual sebelum membangun (saya belum mencoba ini) atau edit sebelum pembuatan Konteks saat run time dan muat MSSL dari salinan yang diedit alih-alih dari resource (tampaknya ini berhasil dan saya juga menggunakan trik serupa untuk memilih MSSL mana yang akan dimuat untuk penyedia DB yang berbeda).



D. Untuk dukungan desainer:

D.1. Unduh win64_11gR2_client.zip atau win32_11gR2_client.zip dan instal.

D.1.1. Pilih "Administrator" sebagai jenis instalasi.

D.2. unduh ODT dan instal.



Saya mencoba ini (A dan B) pada mesin kosong (VM) dengan Windows 7 x64.

Prosedur ini tampaknya tidak berfungsi dengan Oracle.DataAccess.Client versi x86 di Windows x64.

Prosedur ini tampaknya bekerja dengan Oracle.DataAccess.Client versi x64 di Windows x64 dan dengan kedua versi 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. Cara Mendaftar Semua Tabel di Oracle

  2. persyaratan opatch

  3. Berapa banyak indeks database yang terlalu banyak?

  4. Bagaimana saya bisa menghitung jumlah kata dalam string di Oracle?

  5. Pernyataan Disiapkan dan setTimestamp di Oracle jdbc