C# DBProviderFactorys中未列出Oracle数据提供程序(ODP.NET)

C# DBProviderFactorys中未列出Oracle数据提供程序(ODP.NET),c#,database,oracle,C#,Database,Oracle,我想使用DbProvider类来构造一个通用的DAL组件。在不同的数据库提供程序之间切换时,这将非常方便。 在安装了Oracle 2.2的计算机上,尝试列出该计算机上所有可用的数据库提供程序时,未列出Oracle提供程序ODP.NET DataTable dtable = DbProviderFactories.GetFactoryClasses(); 尽管引用Oracle.DataAccess.dll并使用OracleConnection类连接到Oracle并不是问题 OracleCo

我想使用DbProvider类来构造一个通用的DAL组件。在不同的数据库提供程序之间切换时,这将非常方便。 在安装了Oracle 2.2的计算机上,尝试列出该计算机上所有可用的数据库提供程序时,未列出Oracle提供程序ODP.NET

   DataTable dtable = DbProviderFactories.GetFactoryClasses();
尽管引用Oracle.DataAccess.dll并使用OracleConnection类连接到Oracle并不是问题

OracleConnection con = new OracleConnection();
我做错了什么

编辑:
根据这一点,我应该会在列表中看到“Oracle Data Provider for.Net”。

执行代码时,我会在我的数据表中看到以下行:

OracleClient Data Provider .Net Framework Data Provider for Oracle
System.Data.OracleClient System.Data.OracleClient.OracleClientFactory,
System.Data.OracleClient, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089

System.Data.OracleClient应该在.NET Framework 2.0之后的GAC中

以下是DbProviderFactorys.GetFactoryClasses的工作原理

默认情况下,(如果您没有app.config),它将在machine.config中查找名为system.data/dbProviderFactorys的部分。基本上,可以在该部分找到所有可访问的“注册”db提供程序

因此,将其添加到app.config system.data/dbProviderFactorys部分或machine.config

比如:

<configuration>
  <system.data>
    <DbProviderFactories>
      <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description=".Net Framework Data Provider for Oracle" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=10.2.0.100, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>
</configuration>

并确保您的ODP.NET版本支持DbProviderFactorys。我认为您需要Oracle Database 10g Release 2才能做到这一点