首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DbProviderFactories中未列出Oracle数据提供程序(ODP.NET)

DbProviderFactories中未列出Oracle数据提供程序(ODP.NET)
EN

Stack Overflow用户
提问于 2009-07-11 20:13:31
回答 2查看 9.5K关注 0票数 1

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

代码语言:javascript
复制
   DataTable dtable = DbProviderFactories.GetFactoryClasses();

尽管引用Oracle.DataAccess.dll并使用OracleConnection类连接到Oracle是没有问题的。

代码语言:javascript
复制
OracleConnection con = new OracleConnection();

我在这里做错了什么?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-11 20:32:02

下面是DbProviderFactories.GetFactoryClasses的工作原理。

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

因此,要么将其添加到您的app.config system.data/DBProviderFacild节中,要么添加到machine.config中。

类似于:

代码语言:javascript
复制
<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数据库10g第2版才能做到这一点。

票数 3
EN

Stack Overflow用户

发布于 2009-07-11 20:18:26

执行您的代码时,我在datatable中看到以下行:

代码语言:javascript
复制
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 Framework2.0开始,您的GAC中应该包含System.Data.OracleClient

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1114539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档