ADO.NET 实体框架 - 带有实体框架 6 的 Oracle

Posted

技术标签:

【中文标题】ADO.NET 实体框架 - 带有实体框架 6 的 Oracle【英文标题】:ADO.NET Entity Framework - Oracle with Entity Framework 6 【发布时间】:2015-12-26 06:57:14 【问题描述】:

我正在尝试将 ADO.NET 实体数据模型添加到使用 Oracle 数据库 (ODP.NET) 的解决方案中,但出现以下错误:

"你的项目引用了最新版本的Entity Framework; 但是,与此兼容的实体框架数据库提供程序 找不到您的数据连接的版本。如果你有 已经安装了兼容的提供程序,请确保您已重建您的 执行此操作之前的项目。否则,退出此向导, 安装兼容的提供程序,并在之前重建您的项目 执行此操作。”

对话框还说它正在尝试使用 Entity Framework 6.x。

我使用的是 Visual Studio 2013,它是一个 ASP.NET MVC 5 Web 应用程序。我已经为 Windows x64 安装了 64 位 ODAC 12c Release 3 (12.1.0.2.1)。

【问题讨论】:

【参考方案1】:

您必须安装 32 位 Oracle 数据访问组件 (ODAC) 使用适用于 Visual Studio 的 Oracle 开发人员工具。 您可以从Oracle 网站下载。

【讨论】:

在安装 ODAC 12.2c 第 1 版和 Oracle Developer Tools for Visual Studio (12.2.0.1.0) 后,我收到了同样的消息。我试图使用向导创建 ADO.NET Entoty Data 模型 - 数据库中的 EF 设计器和数据库中的 Code First。【参考方案2】:

我遇到了同样的问题并写了一篇关于它的here,这是因为我的 App.Config 文件包含与不同 Oracle Managed Driver DLLs 版本相关的绑定信息,并且有一个简单的解决方案来解决这个错误:)

我只是从 App.config 文件中删除此版本特定数据并重建应用程序。

所以而不是:

  <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.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</DbProviderFactories>

它将是:

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

【讨论】:

以上是关于ADO.NET 实体框架 - 带有实体框架 6 的 Oracle的主要内容,如果未能解决你的问题,请参考以下文章

带有存储过程的实体框架 VS LINQ to SQL VS ADO.NET? [关闭]

无法为实体框架6使用MySQL连接

实体框架寻找 ADO.NET 提供程序 SqlServerCe.3.5 而不是 4.0

找不到具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序。

找不到具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序。

错误:找不到具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序的实体框架提供程序