IQ49

IT業界の感想

ODP.Net CoreでTNS_ADMINを指定する

環境
.Net Core 3.1
Oracle.ManagedDataAccess.Core 2.19.70

.Net Frameworkではapp.configでTNS_ADMINを設定することで接続文字列のDataSourceにtnsnames.oraで設定したデータソース名を用いることができた。.Net Core版ではこれができなくなっている。
代替手段として用意されているのは.NET構成APIを用いる方法だ。OracleConnectionを生成する前にOracleConfiguration.TnsAdminにtnsnames.oraが配置されているフォルダを指定すればよい。
TnsAdminに設定する値は自力でappSettings.jsonから引っ張ってきてどうぞ。

OracleConfiguration.TnsAdmin = "C:\app\NetWork\Admin"; // tnsnames.oraが配置されているフォルダ

orclCon = new OracleConnection("user id=hr; password=<password>; data source=orclpdb");
orclCon.Open();

詳細は公式サイトに書かれている。

docs.oracle.com

またtnsnames.oraは以下の優先順位で検索されるらしい。
1. OracleConfiguration.TnsAdminプロパティで設定されたディレクト
2. 実行中ODP.NET Coreアセンブリディレクト
3. 現行作業ディレクト