1
我们使用ODP.NET Oracle提供程序使用Enterprise库5.0连接到Oracle数据库。Oracle命令的类型转换问题
下面的代码工作正常:
Database database = DatabaseFactory.CreateDatabase(ORACLE_CONNECTION_CONFIG_NAME);
using (OracleCommand dbCommand = (OracleCommand)database.GetStoredProcCommand(SP_NAME))
{
dbCommand.Parameters.Add("parameters");
database.ExecuteReader(dbCommand);
}
但是按照我们的要求,我们需要创建数据库连接之前,使用自定义逻辑来解密连接字符串,所以我们不能用DatabaseFactory.CreateDatabase()方法。
所以我们用下面的代码:
Database database= new Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleDatabase("encrypted connection string");
using (OracleCommand dbCommand = (OracleCommand)database.GetStoredProcCommand(SP_NAME)) {
dbCommand.Parameters.Add("parameters");
database.ExecuteReader(dbCommand);
}
但在运行时,上面的Oracle命令类型转换抛出以下错误:
Unable to cast object of type 'System.Data.OracleClient.OracleCommand' to type 'Oracle.DataAccess.Client.OracleCommand'.
有人能告诉我为什么会抛出一个错误。