Получавах тази грешка при разполагане на приложение ASP.NET MVC 5, използвайки EntityFramework 5 на нашия 64-битов сървър, на който беше инсталирана 64-битовата версия на компонентите на ODAC клиента.
Следвах съвета на b_levitt и потвърдих, че връзката може да бъде отворена ръчно, без да се използват фабриките, така че ODAC беше инсталиран и работеше, но фабричните методи не успяха да намерят възлите.
След като дърпах косата си за неразкрит период от време, разбрах, че проблемът е във файла machine.config за 32-битовата версия на .NET рамката. Той не включваше записите за доставчиците на oracle, така че ръчно добавих следните записи към този файл:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
Под
<configuration>
<configSections>
уверете се, че имате следните две цели на раздела:
<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" />
Можете да получите точните записи от вашия файл machine.config в папката framework64.
След това под
<system.data>
<DbProviderFactories>
уверете се, че имате следните две фабрични имена:
<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" />
След добавянето на тези записи всичко работеше за мен.