gpt4 book ai didi

c# - ODP.NET 错误无法找到请求的 .Net Framework 数据提供程序

转载 作者:可可西里 更新时间:2023-11-01 08:39:41 24 4
gpt4 key购买 nike

我正在尝试使用 Oracle 11g Express 和 .NET 4.0 框架开发 ASP.NET MVC 4.0 应用程序。我可以使用 ODP.NET 提供程序连接到数据库,还可以针对数据库生成我的 EDMX。我不能做的是使用 Entity Framework 查询底层数据库。使用生成的 connectionString Visual Studio 实例化我的 DbContext 时,出现以下错误:

Unable to find the requested .Net Framework Data Provider. It may not be installed

但是安装是因为

  1. 我可以在 GAC 中看到该 dll。
  2. 它在 machine.config 中提到。
  3. 我的项目引用了它。
  4. 我实际上用它从数据库生成我的 EDMX。
  5. 我已确认我在所有地方都引用了正确的版本 (4.112.3.0)

我在 Cassini 上本地运行代码,我的硬件是 32 位架构,所以我假设我只能使用 32 位 DLL,所以这不是架构问题。

具体的代码是这样的:

public class MyContext : ObjectContext, IUnitOfWork
{
public MyContext()
: base(ConfigurationManager
.ConnectionStrings["OracleEntities"]
.ConnectionString)//Connectionstring is verified
{}
}

在我离开一切之前,请帮助我,留出 mustache ,去山上的某个地方生活。

SOLUTION:由于我还没有看到任何解决方案的提及,所以我会在这里为后代提及。下面的 Andrei 询问了我的连接字符串格式,尽管我持怀疑态度,但我还是去看了看。这是我看到的:

metadata=res://*/OracleModel.csdl|res://*/
OracleModel.ssdl|res://*/
OracleModel.msl;
provider=provider=Oracle.DataAccess.Client;
provider connection string="DATA SOURCE=localhost:1521;
PASSWORD=xxx;PERSIST SECURITY INFO=True;USER ID=xxx

现在,特别注意线

provider=provider=Oracle.DataAccess.Client;

应该,事实上,阅读

provider=Oracle.DataAccess.Client;

否则您是在告诉 EF 使用 [provider.dll],这不是真实的东西。另请注意,connectionString 元素的 providerName 属性似乎已被覆盖或忽略。

更新 2:如果仍然没有帮助,请查看 machine.config。您应该看到以下部分:

<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" />

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

</DbProviderFactories>

如果 存在,将其注释掉并重试,否则,如果不存在,将其放入并重试。

最佳答案

对我们来说,这是 32 位与 64 位进程。

服务器是 64 位的。安装的 ODP.NET(Oracle 客户端)也是 64 位的。我们的应用程序使用目标平台“任何 CPU”和“首选 32 位”标志集编译:

http://grab.by/v5ki

作为 32 位进程运行。一旦重新编译并取消选中标志,一切就开始工作了。

关于c# - ODP.NET 错误无法找到请求的 .Net Framework 数据提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17528252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com