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

Oracle.Dataaccess est dans le GAC. Puis-je contrôler la version que j'utilise ?

Il est possible de forcer votre application à toujours utiliser la version ODP et ODAC souhaitée.

  1. Forcer la version ODP :utilisez l'astuce assemblyBinding publiée par Robert, pour forcer l'utilisation de votre version d'Oracle.DataAccess au lieu de la version GAC. Ex. :

    <configuration>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="Oracle.DataAccess"  culture="neutral" publicKeyToken="89b483f429c47342"/>
            <codeBase version="4.112.3.0" href="FILE://Oracle.DataAccess.dll"/>
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    
  2. Forcer la version ODAC :la DLL ODP dépend d'un ensemble de composants Oracle partagés (client instantané, dll OCI non gérées). Une façon de les obtenir est via le package ODAC. Vous pouvez définir (pour chaque application) le package ODAC que vous souhaitez utiliser. Traditionnellement, cela se faisait via la variable d'environnement PATH, mais cela peut maintenant être défini via config :

    <configuration>
      <configSections>
        <section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </configSections>
    
      <oracle.dataaccess.client>
        <settings>
          <add name="DllPath" value="C:\somefolder\ODAC_11.2.0.3.0_32bit\bin" />
        </settings>
      </oracle.dataaccess.client>
    </configuration>
    
  3. Comme précaution supplémentaire, vous pouvez toujours supprimer la DLL de politique d'éditeur du GAC, pour vous assurer qu'il n'y a jamais de funky.