2011-07-20 5 views
1

ODP.NET Oracleプロバイダを使用して、Enterpriseライブラリ5.0を使用してOracle DBに接続しています。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); 
ためのソリューションです
関連する問題