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();
詳細は公式サイトに書かれている。
またtnsnames.oraは以下の優先順位で検索されるらしい。
1. OracleConfiguration.TnsAdminプロパティで設定されたディレクトリ
2. 実行中ODP.NET Coreアセンブリのディレクトリ
3. 現行作業ディレクトリ