我们正在使用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'。
有人可以告诉我为什么这会引发错误。
答案 0 :(得分:0)
以下是此
的解决方案 DbProviderFactory providerFactory =
DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
Database dbServer =
new Microsoft.Practices.EnterpriseLibrary.Data
.GenericDatabase("connection string", providerFactory);