ODP .Net 12使用OraClient11

时间:2015-02-21 15:32:07

标签: oracle entity-framework visual-studio-2010 odp.net

我知道请求可能看起来有些奇怪,但我正在尝试使用EF和Visual Studio 2010针对ORACLE 10g数据库开发.Net应用程序。

最初我尝试使用EF4,这是VS2010中的嵌入式,而ODP11我可以使它工作。但由于EF4(StoreGeneratedPattern bug)中的一些特定错误,我想转到EF5或EF6。 虽然" googleing"有点我能够使用nugets安装EF6并使用以下说明为EF添加上下文生成器:

https://msdn.microsoft.com/en-us/data/jj206878.aspx

这里的问题是系统无法为Entity Framework找到合适的ODP提供程序,因为我只安装了ODP11。 经过调查后再次:)我看到我需要ODP12,它将完全支持EF。我的问题是所有服务器都将使用OraClient 11g对抗Ora10g数据库...我知道没有重大问题(至少对于我需要的用途)将Ora11Client与Ora10Server一起使用但是ODP呢?我无法更改Oracle客户端,我想知道是否可以通过使用ODP12开发应用程序并在具有Ora11g客户端的计算机中执行来解决任何问题。

有人对此有一些建议吗?

提前多多感谢!!

2 个答案:

答案 0 :(得分:0)

我的理解是12的托管驱动程序(NuGet上可用的Oracle.ManagedDataAccess和Oracle.ManagedDataAccess.EntityFramework)将连接到10.2及更高版本,并且不需要在计算机上安装任何客户端,因为它包含它需要的客户。它只是安装在应用程序的bin目录中。请注意,如果您仍然使用.NET 4.0,它似乎目前无法使用.NET 4.0。 4.0版本的Oracle.ManagedDataAccess.EntityFramework在NuGet上显示为测试版,实际上是针对.NET 4.5编译的。

答案 1 :(得分:0)

ODP.NET 12.x依赖于Oracle 12客户端软件,因此您无法将其与11客户端堆栈一起使用。您可以使用ODP.NET 12连接到返回到10.2版的数据库。

您可以使用Xcopy下载在您的应用中嵌入ODP.NET,非托管客户端堆栈,或者您可以使用ODP.NET,托管驱动程序,它只是一个DLL,大小不到10 MB。

Oracle拥有" Oracle Home" (子目录)允许多个版本的软件并行运行。因此,您的服务器上的版本11客户端可以与您在其中部署的版本12软件一起存在。