使用Oracle Command键入强制转换问题

时间:2011-07-20 18:44:24

标签: c# odp.net

我们正在使用ODP.NET Oracle提供程序使用Enterprise library 5.0连接到Oracle DB。

以下代码可以正常使用:

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命令类型转换会抛出以下错误:

  

无法投射类型的对象   键入'System.Data.OracleClient.OracleCommand'   'Oracle.DataAccess.Client.OracleCommand'。

有人可以告诉我为什么这会引发错误。

1 个答案:

答案 0 :(得分:0)

以下是此

的解决方案
  DbProviderFactory providerFactory = 
      DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
  Database dbServer = 
      new Microsoft.Practices.EnterpriseLibrary.Data
                             .GenericDatabase("connection string", providerFactory);