首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET的DbProviderFactories错误

.NET的DbProviderFactories错误
EN

Stack Overflow用户
提问于 2010-01-15 11:30:58
回答 4查看 13.4K关注 0票数 9

我在让ODP.NEt库与.NET DBProviderFactories一起工作时遇到了问题。我收到以下代码的错误信息:

代码语言:javascript
复制
_DBFactory = DbProviderFactories.GetFactory(providerName);

创建system.data的配置节处理程序时出错:列'InvariantName‘被约束为唯一。值'Oracle.DataAccess.Client‘已存在。

使用此providerName: Oracle.DataAccess.Client

以及web.config中的以下条目:

代码语言:javascript
复制
  <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>

有人知道哪里出了问题吗?我不认为我在任何地方都设置了两次。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-16 18:37:35

如果您安装了ODP.net (例如使用oracle通用安装程序,而不是xcopy),您将在machine.config中找到相同的DbProviderFactories/add。

因此,将它添加到您的web.config中就是第二次添加它-所以,复制Oracle.DataAccess.Client!

票数 8
EN

Stack Overflow用户

发布于 2013-01-23 03:14:34

你能做下面的事情吗?(请注意“清除”)

代码语言:javascript
复制
  <system.data>
    <DbProviderFactories>

      <clear />

      <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>
票数 6
EN

Stack Overflow用户

发布于 2015-09-25 05:18:36

应该注意的是,根据您的情况,<clear />将清除您可能不想执行的所有DbProviderFactories

您也可以在重新添加该类之前删除它,方法是添加以下行:

<remove invariant="Oracle.ManagedDataAccess.Client" />

下面是整个<system.data>的外观:

代码语言:javascript
复制
  <system.data>
    <DbProviderFactories>
      <remove invariant="Oracle.ManagedDataAccess.Client" />
      <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver"
           type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>

如果您的本地计算机和服务器环境没有匹配的配置文件,例如machine.config,这将非常有用。

你可以做的另一件事是假设你的machine.config中的设置可以工作,那么你可以把它从你的web.config中全部删除。但是,我会在您的开发机器和您的服务器上进行测试。在我的例子中,它在其中一个上工作,但在另一个上不起作用,因为machine.config文件不匹配。为了解决这个问题,我将这个相同的设置添加到服务器上不带<remove invariant="Oracle.ManagedDataAccess.Client" />的machine.config中,如下所示:

代码语言:javascript
复制
  <system.data>
    <DbProviderFactories>
      <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver"
           type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2069308

复制
相关文章

相似问题

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