【问题标题】:Oracle data provider (ODP.NET) not listed in DbProviderFactoriesDbProviderFactories 中未列出 Oracle 数据提供程序 (ODP.NET)
【发布时间】:2009-07-11 20:13:30
【问题描述】:

我想使用 DbProvider 类来构造一个通用 DAL 组件。这在不同的数据库提供者之间切换时会很方便。 在安装了 Oracle 2.2 的机器上,当试图列出机器上所有可用的数据库提供程序时,没有列出 Oracle 提供程序 ODP.NET。

   DataTable dtable = DbProviderFactories.GetFactoryClasses();

虽然引用 Oracle.DataAccess.dll 并使用 OracleConnection 类连接到 Oracle 没有问题。

OracleConnection con = new OracleConnection();

我在这里做错了什么?

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

【问题讨论】:

    标签: c# database oracle


    【解决方案1】:

    这是 DbProviderFactories.GetFactoryClasses 的工作原理...

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

    所以要么将其添加到您的 app.config system.data/DBProviderFactories 部分或 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 版本支持 DbProviderFactories。我认为您需要 Oracle Database 10g 第 2 版来执行此操作。

    【讨论】:

      【解决方案2】:

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

      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
      

      从 .NET Framework 2.0 开始,System.Data.OracleClient 应该在您的 GAC 中

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-20
        • 2013-05-31
        • 1970-01-01
        • 2018-07-09
        • 1970-01-01
        • 2023-03-06
        相关资源
        最近更新 更多