2011-07-20 52 views
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'.

有人能告訴我爲什麼會拋出一個錯誤。

回答

0

下面是該

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