实体框架与Oracle无法很好地协作

时间:2013-05-31 19:32:11

标签: oracle c#-4.0 entity-framework-4

我已经实现了一个Web服务,它使用附加到Oracle 11g数据库的Entity Framework来使用一些非常简单的linq查询。这在Visual Studio中可以在本地运行。当我将此Web服务部署到我们的开发盒时,它无法正常工作。首先我得到一个错误:

在配置中找不到指定的商店提供商,或者无效。

我做了一些研究并阅读了一些关于修改web.config(或machine.config)以获得此条目的帖子:

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

我选择将它放在web.config中。在我这样做之后,我开始收到错误:

无法加载文件或程序集'Oracle.DataAccess,Version = 2.0.50727,Culture = neutral,PublicKeyToken = 89b483f429c47342'或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)

然后我决定在服务器上安装odp.net。之后我开始收到错误:

为system.data创建配置节处理程序时发生错误:列'InvariantName'被限制为唯一。值'Oracle.DataAccess.Client'已存在。 (D:\ Duke \ SmartGridWS \ web.config第107行)

这当然导致我检查machine.config,果然,odp.net安装在machine.config中输入相同的条目所以,现在我已经删除了重复的web.config条目,我只是得到这个错误:

底层提供程序在Open上失败。

这是我的web.config中的连接字符串条目:

<add name="Entities" connectionString="metadata=res://*/EDMS.csdl|res://*/EDMS.ssdl|res://*/EDMS.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;DATA SOURCE=EDMSPT01;PASSWORD=*redacted*;USER ID=*redacted*&quot;" providerName="System.Data.EntityClient" />

在这里很难过。疯狂道具给巫师谁知道这里发生了什么。

0 个答案:

没有答案