Ricevevo questo errore durante la distribuzione di un'applicazione ASP.NET MVC 5 utilizzando EntityFramework 5 sul nostro server a 64 bit su cui era installata la versione a 64 bit dei componenti client ODAC.
Ho seguito il consiglio di b_levitt e ho confermato che la connessione poteva essere aperta manualmente senza utilizzare le fabbriche, quindi l'ODAC era installato e funzionante, ma i metodi di fabbrica non erano in grado di individuare gli assiemi.
Dopo aver tirato i capelli per un periodo di tempo non divulgato, ho capito che il problema era con il file machine.config per la versione a 32 bit del framework .NET. Non includeva le voci per i provider Oracle, quindi ho aggiunto manualmente le seguenti voci a questo file:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
Sotto
<configuration>
<configSections>
assicurati di avere le seguenti due sezioni complete:
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
<section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
Puoi ottenere le voci esatte dal tuo file machine.config nella cartella framework64.
Successivamente, sotto
<system.data>
<DbProviderFactories>
assicurati di avere i seguenti due nomi di fabbrica:
<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.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
<add name="ODP.NET, Unmanaged Driver" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET, Unmanaged Driver" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
Dopo aver aggiunto queste voci, tutto ha funzionato per me.