EntityFramework 6 with Oracle:是否有 "standalone" ODAC(即没有 ODBC),是否每个客户端 PC 都需要安装它?

EntityFramework 6 with Oracle: Is there a "standalone" ODAC (i.e. without ODBC), and does every client PC need to have it installed?

虽然我的 VS 2013 Update 4 安装是 运行ning 我决定问一些困扰我的问题,这些问题可能很容易回答,因为我还不能测试自己(由于有一个到目前为止的旧 VS 版本)。此外,我对 Oracle 数据库一点经验都没有,我只需要使用一个现有的数据库,它到目前为止一直有效,因为其他人在 运行 年前为它做了所有必要的工作。

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

然后在可更新视图出现一些问题后一切正常。

现在要获得 EF 6 运行 Oracle,我首先需要有更新的 ODAC 版本。 是否需要安装来自 here 的软件包,其中包含成熟的 ODBC? PC 上已经有这个的旧版本。是否有可用的 ODAC 安装 "standalone",或者我是否必须 uninstall/reinstall 我的开发 PC 上的整个软件包?

我也不知道:以后使用该软件的每个客户都需要这个安装,还是可以只提供 DLL? 据我所知,每个客户端都已经在他们的系统上安装了 ODBC,并且每个客户端都分配了一个特定的数据库用户,如果知道这一点很重要的话,他们可以通过该用户读取和操作数据库中的数据。

提前致谢!

您可以使用托管驱动程序 ODP.NET(适用于 .NET 的 Oracle 数据提供程序),您可以从此处下载:Oracle Data Access Components (ODAC) Downloads

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

很长一段时间以来,我一直在使用 unmanaged ODP.NET,即便如此,也可以在完全独立的模式下使用它(尽管您必须拖拽巨大的DLL 与您的应用程序)。此方法描述 here,以防万一。

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