Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EntityFramework 6与Oracle:是否有一个;独立的;ODAC(即没有ODBC),是否每个客户端PC都需要安装ODBC?_C#_Oracle_Entity Framework 6_Odac - Fatal编程技术网

C# EntityFramework 6与Oracle:是否有一个;独立的;ODAC(即没有ODBC),是否每个客户端PC都需要安装ODBC?

C# EntityFramework 6与Oracle:是否有一个;独立的;ODAC(即没有ODBC),是否每个客户端PC都需要安装ODBC?,c#,oracle,entity-framework-6,odac,C#,Oracle,Entity Framework 6,Odac,当我的VS 2013更新4安装正在运行时,我决定问一些困扰我的问题,这些问题可能很容易回答,因为我还不能测试自己(因为到目前为止,我有一个较旧的VS版本)。另外,我对Oracle DB没有太多的经验,我只是不得不使用一个现有的数据库,它迄今为止仍然有效,因为几年前其他人为它的运行做了所有必要的工作 我必须将EntityFramework 6与现有的Oracle DB一起使用。我知道我需要一个ODAC才能工作,而且应该是最新的(12.x)。到目前为止,我是如何测试EF是否能与我的Oracle DB

当我的VS 2013更新4安装正在运行时,我决定问一些困扰我的问题,这些问题可能很容易回答,因为我还不能测试自己(因为到目前为止,我有一个较旧的VS版本)。另外,我对Oracle DB没有太多的经验,我只是不得不使用一个现有的数据库,它迄今为止仍然有效,因为几年前其他人为它的运行做了所有必要的工作

我必须将EntityFramework 6与现有的Oracle DB一起使用。我知道我需要一个ODAC才能工作,而且应该是最新的(12.x)。到目前为止,我是如何测试EF是否能与我的Oracle DB(11g)一起工作的:

  • 从NuGet安装ODAC 11.2.0.3.20
  • NuGet提供的所有EF 5
然后,在使用可更新视图进行了一些复杂操作之后,一切正常

现在要让EF6与Oracle一起运行,我首先需要有更新的ODAC版本是否有必要从安装包含完整ODBC的软件包?电脑上已经有较旧版本的ODBC。是否有ODAC的“独立”安装,或者我必须在我的开发电脑上卸载/重新安装整个软件包

我也不知道:以后使用该软件的每个客户机是否都需要此安装,或者是否可以只发送DLL?据我所知,客户机已经在其系统上安装了ODBC,并且每个客户机都指定了一个特定的DB用户,通过该用户可以读取和操作DB中的数据,如果知道这一点很重要


提前谢谢

您可以使用托管驱动程序ODP.NET(Oracle Data Provider for.NET),您可以从以下位置下载:


它只是您必须分发的单个DLL(Oracle.ManagedDataAccess.DLL)。它同时适用于x86和x64。

很长时间以来,我一直在使用非托管ODP.NET,即使在那时,也可以在完全独立的模式下使用它(尽管您必须在应用程序中拖动巨大的DLL)。本文描述了这种方法,以防万一


现在,使用托管ODP.NET,事情变得容易多了。我只想补充(在Wernfried的回答中)如果您使用NuGet,您可以从安装托管版本。但是请记住,此包不支持分布式事务。

这是否意味着我应该下载链接在其中的小型XCopy版本?这个页面说我需要32位ODT来正确使用EF设计器;那么,我是否可以在我的开发机器上使用完整的ODTwithODAC包,并在部署时仍然提供单个DLL文件?谢谢下载互动程序。正如我所写的,无论是32位还是64位使用它都没有区别。zip还包含一个EF的DLL(EF6/Oracle.ManagedDataAccess.EntityFramework.DLL)。我下载了完整的包(ODTwithODAC),因为我们现在也需要其他东西。现在,我可以成功地引用您提到的DLL,甚至与它一起使用EF设计器。太好了!我只是想知道:当我们发布应用程序时,我们可以包含dll;但是客户端PC上的用户还需要什么吗?比如,用户是否需要更新其ODBC安装,或者在我发布dll时,一切都“正常”吗?不幸的是,我还不能真正测试它。这是我唯一需要添加到项目中的东西吗?当我搜索“ODP”时,NuGet向我展示的东西让我有点不知所措。我想我也可以使用ODP.EntityFramework的东西。正如oracle主页所指出的,我是否仍然需要在本地安装32位ODAC才能使用设计器?谢谢是的,我相信您需要做的唯一一件事就是从NuGet加载该依赖项。尝试搜索“odp.net.managed”。您需要名为“Oracle Data Provider for.NET(ODP.NET)托管驱动程序”的包。至于EntityFramework,我认为您还需要从Nuget安装“odp.net.EntityFramework”依赖项。但是,老实说,我以前从未使用过EntityFramework+Oracle组合。但如果我需要使用它,我会朝这个方向走:从NuGet加载所有需要的依赖项。它大大简化了依赖项的部署和管理。希望你能成功!