我正在使用.NET 4.0,Visual Studio 2010以及Entity Framework和Oracle开发一个应用程序(我们称之为A,一个ASP.NET MVC3网站)。一切顺利。
对于其他应用程序(我们称之为B),我安装了Visual Studio 2012,它安装了新版本的.NET框架。因为,我不能让A正常工作。
我得到的错误是:Oracle 11.2.0.3.0不支持APPLY
我已经进行了一些挖掘,我找到了一个解决方案:当我需要处理A时卸载.NET framework 4.5,并在需要处理B时安装它。这不是很多 令人满意的。
看起来Oracle没有成功将EF查询转换为Oracle查询。但为什么 ?我仍然针对相同版本的.NET框架(4.0)......
我目前正在尝试使用不同的ODAC版本,以查看问题是否可能来自ODAC与新版.NET之间的不兼容。
您对可能导致这种情况以及如何解决问题有任何其他想法吗?
谢谢!
对不起我的英语,我不是母语人士。
答案 0 :(得分:2)
Oracle不支持CROSS / OUTER APPLY,EF生成的一些查询需要这些运算符。有关详细信息,请参阅this和this
话虽如此 - 根据评论,EF5 / .NET Framework 4.5中似乎存在一种回归,其中EF开始在查询中创建Apply节点,而在EF4中未创建Apply节点。它was previously investigated但显然没有涵盖这种情况。
此回归实际上已在EF6中修复(这可能不是非常有用,因为此时目前没有Oracle EF6提供程序(至少不是来自Oracle))