Oracle
 sql >> база данни >  >> RDS >> Oracle

Разгръщане и конфигуриране на ODP.NET за работа без инсталация с Entity Framework

Този отговор обобщава (надявам се) всички необходими стъпки, много от които са документирани на различни места онлайн и може да спести на някого часове търсене в Google.

A. Как да разположите и конфигурирате Oracle.DataAccess.Client.

A.1. Изтеглете ODAC112030Xcopy_64bit.zip или ODAC112030Xcopy_32bit.zip.

A.1.1. Извлечете съдържанието на следните папки в zip файла в папката bin/setup на вашето приложение/хост:

A.1.1.1. instantclient_11_2

A.1.1.2. odp.net4\bin\

A.1.1.3. odp.net4\odp.net\bin\

А.1.1.4. odp.net4\odp.net\PublisherPolicy\4\

A.2. Добавете следния раздел в началото на app.config/web.config на вашето приложение/хост (ако вече имате елемент configSections, добавете секцията към него:

<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. Добавете следните секции в края на app.config/web.config на вашето приложение/хост:

A.4. От папката на ODAC112030Xcopy Изпълнете:

configure.bat odp.net4 somename

Препоръчвам да използвате oraclehome112030_32 или oraclehome112030_64 като „някое име“ по-горе.

<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>



Б. Как да разположите и конфигурирате Oracle.ManagedDataAccess.Client.

B.1. Изтеглете ODP.NET_Managed_1120350_Beta.zip

B.1.1. Извлечете следните файлове в папката bin/setup на вашето приложение/хост.

B.1.1.1. Oracle.ManagedDataAccess.dll

B.1.1.2. x64\Oracle.ManagedDataAccessDTC.dll или x86\Oracle.ManagedDataAccessDTC.dll

B.2. Добавете следния раздел в началото на app.config/web.config на вашето приложение/хост (ако вече имате елемент configSections, добавете секцията към него:

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

B.3. Добавете следните секции в края на 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.1. Добавете тази секция към app.config на сглобката на вашия EDMX:

(Не съм опитвал това с Oracle.Управено DataAccess.Client все още)

<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. Добавете файл с име Oracle.xsd към същия сборник със съдържанието:

<?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. Добавете горния XSD към горния списък със схеми на app.config.

C.4. Ако получавате грешки за булеви съпоставяния по време на изграждане, въпреки че компилацията е успешна, добавете съпоставянията app.config към devenv.exe.config на Visual Studio.

C.5. Ако искате да използвате Oracle.ManagedDataAccess.Client, или редактирайте атрибута на доставчик на данни в EDMX ръчно преди изграждането (не съм пробвал това) или го редактирайте преди създаването на Context по време на изпълнение и заредете MSSL от редактирано копие вместо от ресурс (това изглежда работи и аз също използвам подобен трик, за да избера кой MSSL да се зареди за различни доставчици на DB).



D. За поддръжка на дизайнери:

D.1. Изтеглете win64_11gR2_client.zip или win32_11gR2_client.zip и инсталирайте.

Г.1.1. Изберете "Администратор" като тип инсталация.

Г.2. изтеглете ODT и инсталирайте.



Опитах това (A и B) на празна машина (VM) с Windows 7 x64.

Тази процедура изглежда не работи с x86 версия на Oracle.DataAccess.Client под Windows x64.

Процедурата изглежда работи с x64 версията на Oracle.DataAccess.Client на Windows x64 и с двете версии на 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. PL/SQL програма за изтриване на записите от таблицата

  2. Активиране на SSL или TLS в Oracle Apps R12

  3. При отваряне на връзка с оракул, обектът за връзка е нулев

  4. Продължителност на данните в глобална временна таблица?

  5. Вмъкване в Oracle Nested Table в Java