使用Oracle连接的实体数据模型向导崩溃

16
我无法让VS2015为Oracle连接创建我的EDMX文件。
我正在使用Visual Studio 2015 Update 3。 我已安装了Oracle Developer Tools 12.1.0.2.4。 我已安装Oracle Data Access,以下DLL存在于\ client [user] \ product \ 12.1.0 \ client \ odp.net \ bin下: 2.x \ Oracle.DataAccess.dll 版本:2.121.2.0 ODAC Release 4 4 \ Oracle.DataAccess.dll 版本:4.121.2.0 ODAC Release 4 我正在使用以下程序集 Oracle.ManagedDataAccess 版本:4.122.1.0 Oracle.ManagedDataAccess.EntityFramework 版本:6.122.1.0 * 我相信这两个都是基于它们所在的packages文件夹中的文件夹版本12.2.1100。
服务器资源管理器中没有定义任何连接。
我的步骤如下:
  1. 在Solutions Explorer中,右键单击项目,然后选择“添加”|“新项目...”
  2. 选择数据|ADO.NET实体数据模型|添加
  3. 选择来自数据库的EF Designer |按下Next
在实体数据模型向导中:
  1. 按New Connection... (我收到一个警告“无法找到默认的tnsnames.ora文件。”我忽略并按“确定”
  2. 将数据源设置为“Oracle Database (ODP.NET,Managed Driver)”,输入凭据并指定其他连接参数,然后按“测试连接”,成功。
  3. 我按下OK,进入实体数据模型向导的下一页
  4. 我包含敏感数据在连接字符串中并按下Next....
向导关闭(崩溃)-没有创建EDMX 帮助我解决此问题将不胜感激。
TIA - Xavier

1
我有同样的问题,我会设置赏金来看看我们是否能解决。你刚安装12.1.0.2.4吗?因为12.1.0.2.4安装程序似乎没有任何反应。 - m.edmondson
在我的过去经历中,我曾遇到类似的问题,解决方案是降级EF版本。我建议尝试使用EF 5或6.0来测试ORA设置,作为第一步。 - Marcus Höglund
5个回答

24

感谢@Hong-vit指出了正确的方向,我找到了答案。

当您访问ODAC的下载页面时,您会看到一系列的版本号。

在我的情况下,前两个是:

  • ODAC 12.2c Release 1和Oracle Developer Tools for Visual Studio (12.2.0.1.0)
  • ODAC 12c Release 4和Oracle Developer Tools for Visual Studio (12.1.0.2.4)

对于我来说,第一个版本不能安装。它会在安装过程中中止(谢谢Oracle!),所以我选择了第二个(12.1.0.2.4)。

这意味着当我安装Oracle.ManagedDataAccess和Oracle.ManagedDataAccess.EntityFramework时,我必须选择正确的版本

不适用于我:

enter image description here

我需要的那一个:

enter image description here

正如您所看到的,版本号(几乎!)相匹配:

  • ODAC 12.2.0.1.0 = Oracle.ManagedDataAccess 12.2.1100
  • ODAC 12.1.0.2.4 = Oracle.ManagedDataAccess 12.1.24160719 (太好了!)

我认为这是 Oracle 的失误,因为在一页长的自述文件中没有明确说明,尽管它们被包含在其中。此外,版本号并不完全相同...但这只是对博客的抱怨。


这终于解决了我的问题。我最初使用的是EF 6.2和Oracle.ManagedDataAccess v18.*。然而,本地ODTs安装的是32位版本12.2.*。因此,我将其降级到相应的版本,实体模型向导就能按预期工作了。 - MichaelHuelsen
这个解决方案是通过匹配版本号来实现的。然而在我的情况下,新版本的ODT(Oracle Developer Tools)适用于VS2017,以及必须匹配的Oracle.managedDataAcesss版本是12.2.1100。 - EspressoBeans

12

我有同样的bug。我成功地通过以下步骤来修复:

在你的项目中右键单击 -> 选择"管理NuGet包",在浏览选项卡输入oracle。你会看到Oracle.ManagedDataAccess.EntityFramework。选择你安装的Oracle版本,这应该是12.1.2400。安装它,完成了。


3
我曾经遇到过同样的问题 - 我希望我能帮助那些不幸需要连接Oracle和Visual Studio的谷歌用户。我按照步骤操作,但仍然出现崩溃 - 因为我使用的是VS2017(我知道这个问题标记的是VS2015)。你需要安装VS2017 ODAC Client。值得庆幸的是,这个安装程序在开始安装时实际上会执行一些操作。被接受答案中链接的安装程序只适用于VS2015。
截至本文撰写时,ODP.NET的最新版本是18.3,可以通过NuGet(Oracle.ManagedDataAccess.EntityFramework)安装。按照Oracle网站上的这些步骤进行设置即可。

......或者你认为的那样。我遇到了与stack overflow question中相同的错误,无法通过实体数据模型向导。

我尝试了所选答案中的所有配置,但仍然无法正常工作。当我将Oracle.ManagedDataAccess.EntityFramework从18.3.0降级到12.2.1100时,我终于能够创建我的模型!


1
我曾经在尝试将Oracle Entity Framework与Visual Studio 2017连接时遇到了同样的问题。在多次安装和卸载不同版本后,对我而言最好的构建版本是:

Oracle Developer Tools for Visual Studio 2017 (ODTv2017) v12.2.1200

Oracle.ManagedDataAccess v12.2.1100

Oracle.ManagedDataAccess.EntityFramework v12.2.20190115

EntityFramework .NET v6.3.0

我认为,在Oracle软件包中拥有相似的版本非常重要以获得良好的性能。

1
谢谢你的回答。它对我很有帮助。 在我的情况下,这些包没有出现任何错误:
  • EntityFramework 6.1.3
  • Oracle.ManagedDataAcces 12.2.20230118
  • Oracle.ManagedDataAcces.EntityFramework 12.2.20230118
- nandox

0

看起来这里有人遇到了类似的问题:他必须以某种方式改变实现。

[在这个]情况下,一个视图(有效且可用)导致了崩溃。在不使用该视图的情况下更改实现后,它工作了(或多或少)。

我的建议是您逐步进行,仅在第一次测试向导时导入一个对象,然后仅使用简单表格,然后添加过程、视图等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接