Oracle
 sql >> Base de données >  >> RDS >> Oracle

Déploiement et configuration d'ODP.NET pour qu'il fonctionne sans installation avec Entity Framework

Cette réponse résume (espérons-le) toutes les étapes requises, dont beaucoup sont documentées à divers endroits en ligne et pourraient faire économiser à quelqu'un des heures de recherche sur Google.

A. Comment déployer et configurer Oracle.DataAccess.Client.

A.1. Téléchargez ODAC112030Xcopy_64bit.zip ou ODAC112030Xcopy_32bit.zip.

A.1.1. Extrayez le contenu des dossiers suivants du fichier zip dans le dossier bin/setup de votre application/hôte :

A.1.1.1. clientinstantané_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. Ajoutez la section suivante au début du fichier app.config/web.config de votre application/hôte (si vous avez déjà un élément configSections, ajoutez-y la section :

<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. Ajoutez les sections suivantes à la fin du fichier app.config/web.config de votre application/hôte :

A.4. À partir du dossier ODAC112030Xcopy, exécutez :

configure.bat odp.net4 somename

Je recommande d'utiliser oraclehome112030_32 ou oraclehome112030_64 comme "somename" ci-dessus.

<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. Comment déployer et configurer Oracle.ManagedDataAccess.Client.

B.1. Télécharger ODP.NET_Managed_1120350_Beta.zip

B.1.1. Extrayez les fichiers suivants dans le dossier bin/setup de votre application/hôte.

B.1.1.1. Oracle.ManagedDataAccess.dll

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

B.2. Ajoutez la section suivante au début du fichier app.config/web.config de votre application/hôte (si vous avez déjà un élément configSections, ajoutez-y la section :

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

B.3. Ajoutez les sections suivantes à la fin du fichier app.config/web.config de votre application/hôte :

<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. Pour la construction :

C.1. Ajoutez cette section au fichier app.config de votre assembly EDMX :

(Je n'ai pas essayé cela avec Oracle.Géré DataAccess.Client encore)

<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. Ajoutez un fichier nommé Oracle.xsd au même assembly avec le contenu :

<?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. Ajoutez le XSD ci-dessus à la liste de schémas app.config ci-dessus.

C.4. Si vous obtenez des erreurs pour les mappages booléens pendant la construction même si la construction réussit, ajoutez les mappages app.config au devenv.exe.config de Visual Studio.

C.5. Si vous souhaitez utiliser Oracle.ManagedDataAccess.Client, modifiez manuellement l'attribut du fournisseur de données dans EDMX avant la construction (je n'ai pas essayé cela) ou modifiez-le avant la création de Context au moment de l'exécution et chargez MSSL à partir de la copie modifiée au lieu de ressource (cela semble fonctionner et j'utilise également une astuce similaire pour choisir quelle MSSL charger pour différents fournisseurs de base de données).



D. Pour l'assistance aux concepteurs :

D.1. Téléchargez win64_11gR2_client.zip ou win32_11gR2_client.zip et installez.

D.1.1. Sélectionnez "Administrateur" comme type d'installation.

D.2. téléchargez ODT et installez-le.



J'ai essayé ceci (A et B) sur une machine vierge (VM) avec Windows 7 x64.

Cette procédure ne semble pas fonctionner avec la version x86 d'Oracle.DataAccess.Client sur Windows x64.

La procédure semble fonctionner avec la version x64 d'Oracle.DataAccess.Client sur Windows x64 et avec les deux versions d'Oracle.ManagedDataAccess.Client.