【问题标题】:.NET 4.6 Oracle.ManagedDataAccess Requirements.NET 4.6 Oracle.ManagedDataAccess 要求
【发布时间】:2017-03-27 19:34:02
【问题描述】:

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

我们已经在使用 Oracle.ManagedDataAccess 客户端。我们使用实体框架和数据集(TableAdapters,...)进行数据访问。

目前我们总是为大约 1.2 GB 的应用程序安装“完整的”Oracle Administrator 客户端,但要让我们的应用程序与 Oracle 一起工作真正需要什么?

Oracle.ManagedDataAccess 驱动程序的 Nuget 页面显示“无需安装额外的 Oracle 客户端软件即可连接到 Oracle 数据库。” 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 位应用程序,反之亦然?

【问题讨论】:

    标签: c# .net .net-4.6 oracle-manageddataaccess


    【解决方案1】:

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

    <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 客户端。如果您使用 Code First,则不必担心。

    【讨论】:

    • 所以这意味着对于生产系统我只需要将你的 xml 添加到我的 web.config 中就可以了吗?没有其他要求了吗?对于开发机器:安装“Oracle Developer Tools for Visual Studio”就够了吗?
    • @Pinzi 我已经有一段时间没有搞砸它了,但我相信只有在您使用数据库优先时才需要这些 Oracle 开发人员工具。如果您使用 Code First(我强烈推荐),那么您只需要在您的开发机器上使用托管驱动程序即可。
    • 非常感谢,无需安装任何其他客户端即可正常工作。 @Database/Code First:不幸的是,code first 不是我们的选择,因为我们已经有一个需要继续使用的现有数据库。
    • @Pinzi Code First 并不意味着它不适用于现有数据库。这只是意味着您需要手动生成模型类和关系,而不是使用 EDMX。当您拥有大型现有数据库时会有点痛苦,但从长远来看比使用 EDMX 容易得多。
    • @Pinzi 作为使用 Oracle 和 Entity Framework 的人说话......这很痛苦。愚蠢的差异,比如它如何处理表名中区分大小写的方式可能是一个真正的痛苦。如果我是你,我不知道我会将 EF 与 Oracle 一起使用。根据您所做工作的规模,Dapper 或 PetaPoco 等微型 ORM 可能会更好。
    猜你喜欢
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 2018-06-05
    相关资源
    最近更新 更多