C# 使用Oracle命令键入强制转换问题
我们正在使用ODP.NET Oracle provider使用企业库5.0连接到Oracle DB 以下代码可以正常工作:C# 使用Oracle命令键入强制转换问题,c#,odp.net,C#,Odp.net,我们正在使用ODP.NET Oracle provider使用企业库5.0连接到Oracle DB 以下代码可以正常工作: Database database = DatabaseFactory.CreateDatabase(ORACLE_CONNECTION_CONFIG_NAME); using (OracleCommand dbCommand = (OracleCommand)database.GetStoredProcCommand(SP_NAME)) { dbCommand.P
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”
有人能告诉我为什么这会出错吗 这是解决这个问题的方法
DbProviderFactory providerFactory =
DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
Database dbServer =
new Microsoft.Practices.EnterpriseLibrary.Data
.GenericDatabase("connection string", providerFactory);
这是解决这个问题的办法
DbProviderFactory providerFactory =
DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
Database dbServer =
new Microsoft.Practices.EnterpriseLibrary.Data
.GenericDatabase("connection string", providerFactory);