Скорее всего, ваша цель компиляции - .NET Framework 4.0 (или выше), но вы установили ODP.NET версии 2.x - они не работают вместе.
Одним из решений является использование управляемого драйвера ODP.NET, что вы уже сделали. Однако есть и другое решение, см. Поставщик не совместим с версией клиента Oracle
Теперь вторая проблема, касающаяся ORA-12154: TNS:could not resolve the connect identifier specified
Управляемый драйвер ODP.NET использует другой метод для поиска файлов sqlnet.ora
и tnsnames.ora
(и ldap.ora
, если используется), чем неуправляемый драйвер, см. Определение местоположения соответствующего файла tnsnames.ora
Неуправляемые драйверы ищут папку %ORACLE_HOME%\network\admin
и считывают ключ реестра HKLM\SOFTWARE\ORACLE\KEY_OraClient11g_home1\TNS_ADMIN
, а управляемый драйвер ODP.NET - нет.
Управляемый драйвер ODP.NET извлекает местоположение tnsnames.ora
из вашего конфигурационного файла .NET, т.е. machine.config
. Вы можете изменить файл вручную (см. Поставщик данных Oracle для .NET, Конфигурация управляемого драйвера ) или использовать пакетный скрипт, как показано ниже (выберите строки x64 или x86, которые вам подходят, и измените имена папок в соответствии с вашим машина)
set Oracle_x64=c:\oracle\product\11.2\Client_x64\odp.net
set Oracle_x86=c:\oracle\product\11.2\Client_x86\odp.net
OraProvCfg_x64=%Oracle_x64%\bin\4\OraProvCfg.exe
OraProvCfg_x86=%Oracle_x86%\bin\4\OraProvCfg.exe
set TNS_ADMIN=C:\oracle\network\admin
"%OraProvCfg_x64%" /action:config /product:odpm /frameworkversion:v4.0.30319 /providerpath:%Oracle_x64%\managed\common\Oracle.ManagedDataAccess.dll /set:settings\TNS_ADMIN:%TNS_ADMIN%
"%OraProvCfg_x86%" /action:config /product:odpm /frameworkversion:v4.0.30319 /providerpath:%Oracle_x86%\managed\common\Oracle.ManagedDataAccess.dll /set:settings\TNS_ADMIN:%TNS_ADMIN%
Или установите TNS_ADMIN
в качестве переменной окружения, которая должна работать в любом случае.