Oracle データベース 11g があり、Entity Framework を使用してそこからデータを読み取りたいと考えています。最初のステップでは、データベース接続を確立し、接続されている場合はステータスを取得しようとしています。ただし、次のエラーが発生します。
An exception of type 'System.ArgumentException' occurred in Oracle.ManagedDataAccess.dll but was not handled in user code
私の接続文字列は次のとおりです。
<connectionStrings>
<add name="EBS_UCAS_DbConnection" providerName="Oracle.ManagedDataAccess.Client" connectionString="Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 193.00.100.00)(PORT = 1500)))(CONNECT_DATA =(SERVICE_NAME = myservice)));Persist Security Info=True;User ID=myuser;Password=mypassword;Unicode=True"/>
</connectionStrings>
ここでコードをテストしようとしていますが、エラーが発生しています
public void TestOracleConnection()
{
using (var dbContext = new UCAS_dbContext())
{
var data = dbContext.SyncCodes.Select(x => x.SyncDesc).ToList();
var xx = "dd";
}
}
基本 DBContext クラス
public class BaseContext<TContext> : DbContext where TContext : DbContext
{
static BaseContext()
{
Database.SetInitializer<TContext>(null);
}
protected BaseContext()
: base("name = EBS_UCAS_DbConnection")
{ }
}
DbContext クラス
public class UCAS_dbContext :BaseContext<UCAS_dbContext>
{
public DbSet<SyncCodesEntity> SyncCodes { get; set; }
}
モデルクラス
[Table("SYNC_CODES")]
public class SyncCodesEntity
{
[Key]
public int ID { get; set; }
public string SyncDesc { get; set; }
}
TNSが機能している他のプロジェクトで
public string database = "(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 193.00.100.00)(PORT = 1500)))(CONNECT_DATA =(SERVICE_NAME = myserver)))";
public void setConnectString(string username, string password, string database)
{
if (this.disposed)
{
throw new ObjectDisposedException("clarusOracleObj");
}
connectString = "Data Source=" + database + ";Persist Security Info=True;User ID=" + username + ";Password=" + password;
try
{
dbConn = new OracleConnection(connectString);
dbConn.Open();
dbConn.Close();
}
catch (Exception ex)
{
//reset the connectString and throw the exception again.
connectString = "";
throw ex;
}
}
Visual Studio のデータ プロパティから接続文字列をコピーし、.NET Framework Data Provider for Oracle を使用します。
Data Source=sittingbull.blackpool.ac.uk:1500/myservice;Persist Security Info=True;User ID=myuser;Password=***********;Unicode=True