Otrzymuję ten błąd podczas wdrażania aplikacji ASP.NET MVC 5 przy użyciu EntityFramework 5 na naszym 64-bitowym serwerze, na którym zainstalowano 64-bitową wersję składników klienta ODAC.
Postępowałem zgodnie z radą b_levitt i potwierdziłem, że połączenie można otworzyć ręcznie bez korzystania z fabryk, więc ODAC został zainstalowany i działał, ale metody fabryczne nie były w stanie zlokalizować zespołów.
Po wyrywaniu włosów przez nieujawniony czas, zorientowałem się, że problem tkwi w pliku machine.config dla 32-bitowej wersji frameworka .NET. Nie zawierał wpisów dotyczących dostawców wyroczni, więc ręcznie dodałem do tego pliku następujące wpisy:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
Pod
<configuration>
<configSections>
upewnij się, że masz następujące dwie części w całości:
<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" />
Możesz uzyskać dokładne wpisy z pliku machine.config w folderze framework64.
Następnie pod
<system.data>
<DbProviderFactories>
upewnij się, że masz następujące dwie nazwy fabryczne:
<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" />
Po dodaniu tych wpisów wszystko u mnie działało.