ODP.NET、マネージドドライバーでTNS名を解決するための優先順位は、次のとおりです(ここを参照):
- .NET構成ファイルのセクションの下にある「dataSources」セクションのデータソースエイリアス。
- .NET構成ファイルの「TNS_ADMIN」で指定された場所にあるtnsnames.oraファイルのデータソースエイリアス。
- .exeと同じディレクトリにあるtnsnames.oraファイルのデータソースエイリアス。
- %TNS_ADMIN%にあるtnsnames.oraファイルのデータソースエイリアス(%TNS_ADMIN%は環境変数設定です)。
- %ORACLE_HOME%\ network \ adminにあるtnsnames.oraファイルのデータソースエイリアス(%ORACLE_HOME%は環境変数設定)。
サンプルがOracle.DataAccessで機能するが、Oracle.ManagedDataAccessでは機能しない理由は、後者ではWindowsレジストリベースの構成がサポートされていないためだと思います(ドキュメントを参照)。ODP.NETのインストールにより、ORACLE_HOMEレジストリキー(HLKM \ SOFTWARE \ Oracle \ Key_NAME \ ORACLE_HOME)は、管理されていない部分によってのみ認識されます。