C# EntityFramework 6与Oracle:是否有一个;独立的;ODAC(即没有ODBC),是否每个客户端PC都需要安装ODBC?
当我的VS 2013更新4安装正在运行时,我决定问一些困扰我的问题,这些问题可能很容易回答,因为我还不能测试自己(因为到目前为止,我有一个较旧的VS版本)。另外,我对Oracle DB没有太多的经验,我只是不得不使用一个现有的数据库,它迄今为止仍然有效,因为几年前其他人为它的运行做了所有必要的工作 我必须将EntityFramework 6与现有的Oracle DB一起使用。我知道我需要一个ODAC才能工作,而且应该是最新的(12.x)。到目前为止,我是如何测试EF是否能与我的Oracle DB(11g)一起工作的: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
- 从NuGet安装ODAC 11.2.0.3.20
- NuGet提供的所有EF 5
提前谢谢 您可以使用托管驱动程序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加载所有需要的依赖项。它大大简化了依赖项的部署和管理。希望你能成功!