私は同じ問題を抱えていて、C# プロジェクト参照に追加して解決しましたOracle.ManagedDataAccess Oracle.DataAccess の代わりに .
これを行うには、(Tools / Nugget Package Manager / Nugget Package Manager for Solution) に移動します。 Oracle References を参照し、Oracle.ManagedDataAccess を選択します。 .
次に、ManagedDataAccess への実際の DataAccess 呼び出しを次のようにコメントまたは削除する必要があります。
//using Oracle.DataAccess.Client;
//using Oracle.DataAccess.Types;
using Oracle.ManagedDataAccess.Client;
接続コードを変更する必要はありません。コーディングを使用するだけです。動作したら、プロジェクト参照から Oracle.DataAccess を削除できます
ODP.NET を使い始めたときも同じ問題がありました。
コードは次のように調整できます:
try
{
OracleConnection con;
con = new OracleConnection();
con.ConnectionString = "DATA SOURCE=<DSOURCE_NAME>;PERSIST SECURITY INFO=True;USER ID=******;PASSWORD=*******";
con.Open();
}
catch (OracleException ex)
{
Console.WriteLine("Oracle Exception Message");
Console.WriteLine("Exception Message: " + ex.Message);
Console.WriteLine("Exception Source: " + ex.Source);
}
catch (Exception ex)
{
Console.WriteLine("Exception Message");
Console.WriteLine("Exception Message: " + ex.Message);
Console.WriteLine("Exception Source: " + ex.Source);
}
エラーの詳細については、こちらをご覧ください:ORA-12154
問題はあなたの Data Source
です 接続文字列で。次のようになっていると思います:Data Source=Server.Source
TNSNAMES.ORA
で見つけることができるように
問題は、ODP.NET が TNSNAMES.ORA
を読み取らないことです。 Visual Studio と同じようにファイルします。
この問題を解決するには複数の選択肢があります:
<オール>Web.Config
を編集してください または App.config
ファイルを作成して、ODP.NET にソースの処理方法を指示します。TNSNAMES.ORA
をコピーしてください .exe
と同じディレクトリにあるファイル . (ウェブアプリでない場合)Data Source
を変更する エイリアスの代わりに長いバージョンを書くために。例えば。 :Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)......)))
私のお気に入りの方法は #3 です .問題が発生したときのデバッグがはるかに簡単になります。
詳細については、データ ソース セクションをご覧ください。 Oracle Data Provider for .NETの構成ドキュメントの。