Вы смешиваете несколько вопросов.Утверждение типа «все еще не работает» не очень полезно без каких-либо сообщений об ошибках.
Если вы хотите использовать 32-битный и 64-битный клиент Oracle, следуйте этой инструкции: BadImageFormatException.Это произойдет при работе в 64-битном режиме с установленными 32-битными клиентскими компонентами Oracle
При такой установке это работает любым из способов.
В вашем коде вы используете ODP.NET Управляемый Драйвер.Здесь не имеет значения, используете ли вы 32-разрядную или 64-разрядную версию, поэтому ошибка отличается от описанной выше.
Проблема в том, что разные драйверы используют другой путь для выделения файла tnsnames.ora
(см. Определение местоположения соответствующего файла tnsnames.ora ).
Самое важное отличие между Управляемым драйвером ODP.NET и многими другими драйверами: Управляемый драйвер ODP.NET не читает ваш реестр , тогда как другие читают ключ HKLM\SOFTWARE\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
, соответственно.HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle_Home_Name}\TNS_ADMIN
Определите местоположение tnsnames.ora
либо с помощью переменной среды TNS_ADMIN
, либо настройте его в конфигурационном файле .NET.Я думаю, что самый простой способ - это инструмент OraProvCfg.exe
для этого:
set Oracle_x64=c:\oracle\product\12.1\Client_x64\odp.net
set OraProvCfg_x64=%Oracle_x64%\bin\4\OraProvCfg.exe
set Oracle_x86=c:\oracle\product\12.1\Client_x86\odp.net
set 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%