.NET 4.6 Oracle.ManagedDataAccess 要求

.NET 4.6 Oracle.ManagedDataAccess Requirements

获得与 Oracle 一起工作的 .NET 4.6 应用程序的最低要求到底是什么?

我们已经在使用 Oracle.ManagedDataAccess 客户端。我们正在使用 Entity Framework 和数据集(TableAdapters,...)进行数据访问。

目前我们总是为我们的应用程序安装 "full" Oracle Administrator 客户端,它大约有 1.2 GB,但是要使我们的应用程序与 Oracle 一起工作真正需要什么?

Oracle.ManagedDataAccess 驱动程序的 Nuget 页面说 "No additional Oracle Client software is required to be installed to connect to Oracle Database." https://www.nuget.org/packages/Oracle.ManagedDataAccess/

但是当我在 Visual Studio 中打开我的应用程序时,出现以下错误:

The ADO.NET provider with invariant name 'Oracle.ManagedDataAccess.Client' is either not registered in the machine or application config file, or could not be loaded. See the inner exception for details.

我试图在 Oracle 文档中弄清楚,但没有机会这样做,太混乱了。

此外:64 位托管 Oracle 客户端也可以与 32 位应用程序一起工作,反之亦然?

我现在没有可用的 Oracle 来验证这是完全正确的,所以提前道歉。您可能需要调整版本号或 public 密钥令牌等

<configuration
  <system.data>
    <DbProviderFactories>
      <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>
</configuration>

以上配置会将托管 Oracle 驱动程序注册为提供程序,应该可以解决您的问题。无需安装完整的 Oracle 客户端,因为完全包含托管驱动程序。 32 位和 64 位无关紧要,因为它们都在托管代码中。

请注意,托管驱动程序不会安装 Database First 使用的 Visual Studio 中各种设计器所需的工具。为此,您需要完整的 Oracle 客户端。如果您正在执行代码优先,则不必担心。