【问题标题】:Entity Framework 6 (5) connection to OracleEntity Framework 6 (5) 与 Oracle 的连接
【发布时间】:2014-04-25 17:41:40
【问题描述】:

我正在尝试为我们在 .net 中使用 Oracle 的应用程序套件编写数据访问库。我们目前使用 NHibernate,并且正在考虑迁移,因为它似乎没有得到很好的支持。

我正在使用 Visual Studio 2013,我们已经构建了我们的 Oracle 数据库。我们没有写来更新它(那是 db 家伙的领域)。因此,这不会成为我们任何计算的一部分。

服务器上的客户端是 32 位的,所以我们现在将坚持使用它。它已经在那里被GAC'd,不需要改变它。所以我们的开发盒上有 32 位客户端。

我通过 nuget 将 EntityFramework 6.1.0 安装到我的项目中。我的项目中安装了 ODAC 1.112.3.20。应用程序的 32 位版本。我还安装了 ODP.net.x86 驱动程序(也通过 nuget)。

问题是每次我尝试创建 ADO.net 数据库连接时,oracle 提供程序都不是一个选项?我错过了什么?我需要什么才能让它工作?

我曾经读过一个 oracle 论坛,上面说我需要将我的实体框架设置为 5.0 而不是 6.0。哪个很好,但我该怎么做呢?

【问题讨论】:

  • 我认为 ODP.NET 目前不支持 EF6。您可能需要查看 DevArt 的 Oracle 提供程序。
  • 在 oracles 论坛上,他们说您必须将其设置为 EF6 到 EF5?你是怎么做到的?
  • 对于那些想知道的人:StackOverFlow Question 回答了如何获得 EF5。

标签: visual-studio-2013 entity-framework-6 odp.net odac


【解决方案1】:

ODAC 12c Release 3 Beta 现在提供 EF 6 支持:

来自 .Net 开发者时事通讯(重点是我的):

新下载:ODAC 12c Release 3 Beta 新的 ODAC Beta 包括 Entity Framework 6、代码优先、代码优先迁移、.NET 框架 4.5.2 认证、托管 ODP.NET XML DB 和托管 ODP.NET 分布式事务支持,无需 Oracle.ManagedDataAccessDTC.dll。

【讨论】:

    【解决方案2】:

    我知道这有点老了,但这是为了回答您问题的最后一部分(如何安装 EFv5)。 (为 VisualStudio 2013 编写的说明)打开解决方案后,单击工具->NuGet 包管理器->包管理器控制台。输入以下内容:

    Install-Package EntityFramework -Version 5.0.0

    编辑

    我已经有一段时间没有设置我的机器了,但我认为这是我必须做的,希望它有所帮助。

    设置:

    1. 安装 Oracle Instant Client(或为 Oracle Home 执行的任何操作)
    2. 安装 ODTwithODAC121012(如果你用 Google 搜索,它应该会出现)
    3. 确保您的 tnsnames.ora 位于您的 Oracle Home 的正确位置

    设置新的 Visual Studio 解决方案:

    1. 新解决方案(对我来说,是 ASP.NET Web 应用程序类型)
    2. 按照原始答案运行命令
    3. 添加类库类型的新项目(用于模型/实体)
    4. 在新项目中,添加 ADO.NET 实体数据模型类型的新项
    5. 在实体数据模型向导中:
      1. 数据库中的 EF 设计器(如果您使用现有数据库)
      2. 新连接
      3. 在数据源中,(希望)有一个 Oracle 数据库选项
      4. 在下面,在数据提供程序中,我选择了 ODP.NET 托管驱动程序
      5. 输入用户/密码,选择数据源和名称连接

    编辑 2

    哦,我忘了一件事,不知道它是否重要。您可能需要在该模型项目中添加对 oracle 驱动程序的引用。右键项目->添加->参考->程序集->搜索“oracle”,希望有Oracle.ManagedDataAccess的条目(我的版本是4.121.1.0)

    一些咆哮:

    1. 我认为这个过程应该不会那么困难
    2. 我也不知道为什么要花这么长时间才能更新。 http://www.devart.com/ 似乎可以很好地掌握新的 Oracle/Visual Studio 更改(他们收费,但 Oracle 也是如此
    3. 我脑子里的阴谋部分说,Oracle 没有兴趣让你更容易使用他们的产品,所以他们没有努力李>
    4. 他们的默认号码映射真的会搞砸你。例如,如果您的 Oracle DB 具有类型为 NUMBER(10) 的字段,当并非所有 10 位数字都适合时,它会将其映射为 32 位 int :(
    5. 有关该映射的更多信息(链接显示如何覆盖该 32 位问题),请参阅: http://docs.oracle.com/cd/E56485_01/win.121/e55744/InstallConfig.htm#ODPNT8167

    【讨论】:

    • 我很感激乔丹。我仍在寻找这个问题的答案。我记得尝试过,但我仍然无法添加 oracle 连接。这是我遇到的问题。你有这方面的经验吗?
    • 我最近意识到的一件事是,我的机器上安装了一个相当旧版本的 Oracle 客户端...... 11203,32 位。这可能在很大程度上影响了我的联系能力。
    • @jordan.roskelley “一些咆哮”#5 中的链接已损坏
    【解决方案3】:

    ODP.NET 尚不支持 EF 6。有关详细信息,请参阅发行说明 (README)。不久将支持 EF6。

    编辑:现在支持 EF6。

    【讨论】:

    • 你知道,这很令人沮丧。我对创建一个我们的应用程序可以使用的伟大 DAO 寄予厚望。我可能会尝试 NHibernate,但看起来那里没有很棒的教程。关于使用 Entity Framework 5.0 连接到 Oracle 的任何消息?
    • 我来晚了,但是 Dapper 是一个可以通过 Oracle 选项轻松启动和运行的选项。您错过的是 ORM 设计器部分——但您可以轻松地查询到您自己滚动的类。在某种程度上消除了针对 db-first 进行设计的乐趣,但仍然有效。
    【解决方案4】:

    抱歉,我错过了你的部分问题。

    如果您使用的是 Visual Studio 2013,则必须下载 Oracle Developer Tools for Visual Studio 版本 12.1.0.1.2 或更高版本。对于任何旧版本,它将无法与 VS 2013 集成。

    这里是下载地址: http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html

    尚不支持 EF 6.0,但您可以在 VS 2013 中使用 EF5 提供程序。所以我的其他答案并不真正相关。

    【讨论】:

    • 您可以使用 Nuget 安装它,还是使用 oracle 客户端?我刚刚发现我有 Oracle_CLient_11203 32 位......实体框架的哪个版本与它接口?
    • 我还忘了提到我可以使用我机器上安装的 oracle 客户端连接到我们的数据库。我只是无法从视觉工作室连接到它。我也许可以设置一个连接字符串和所有爵士乐并编写我自己的 ORM 工具,但我真的希望使用实体框架来完成这项工作。
    • 您必须安装 Oracle Developer Tools 12.1.0.1.2 或更高版本。没有其他方法可以将实体设计器与 Visual Studio 2013 一起使用。它随 Oracle 12.1 客户端一起提供,并且适用于版本早于 10.2 的数据库。您将把它安装到一个新的“oracle home”(子目录)中,这将最大限度地减少对您当前设置的干扰。您需要的工具无法通过 nuget 获得,它不是为安装插件而设计的。
    • 使用 ODT 12.1 进行设计后,如果您需要在部署中使用 ODP.NET 11.2,您可以在设计完所有实体后尝试将其换入......
    【解决方案5】:

    Entity Framework 6 代码优先

    ODAC 12c R3 是第一个通过 Entity 认证的 ODP.NET 版本 框架 (EF) 6 和 EF 代码优先。 EF Code First 是一种流行的 .NET 对象关系映射的开发模型。开发者 使用源代码定义应用程序域模型,而不是 使用设计器或基于 XML 的配置文件。 EF 代码优先 模型的类是通过普通旧 CLR 对象在代码中定义的 (POCO)。

    ...

    这些功能在托管和非托管中都可用 ODP.NET。

    http://cshay.blogspot.com/2014/09/odac-12c-release-3-beta-now-available.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 2014-03-20
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多