实体框架6(5)与Oracle的连接

时间:2014-04-25 17:41:40

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

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

我正在使用Visual Studio 2013,我们已经构建了Oracle数据库。我们没有写入更新它(这是数据库人员的域名)。所以这不会成为我们最终计算的一部分。

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

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

问题在于,每当我尝试创建ADO.net数据库连接时,oracle提供程序永远不是一个选项?我错过了什么?我需要什么才能让它发挥作用?

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

5 个答案:

答案 0 :(得分:9)

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

来自.Net Developer简报(强调我的):

新下载:ODAC 12c第3版测试版新的ODAC测试版包含  实体框架6 ,代码优先,代码优先迁移,.NET Framework  4.5.2认证,托管ODP.NET XML DB,以及托管ODP.NET分布式事务支持,无需Oracle.ManagedDataAccessDTC.dll。

答案 1 :(得分:8)

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

Install-Package EntityFramework -Version 5.0.0

修改

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

设置:

  1. 安装Oracle Instant Client(或您为Oracle Home执行的任何操作)
  2. 安装ODTwithODAC121012(如果你谷歌那么,它应该出现)
  3. 确保您的tnsnames.ora位于适合您的Oracle Home
  4. 的位置

    设置新的Visual Studio解决方案:

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

      哦,我忘记了一件事,不确定它是否重要。您可能需要将该Model项目中的引用添加到oracle驱动程序。右键单击项目 - >添加 - >参考 - >装配 - >搜索'oracle',希望Oracle.ManagedDataAccess有一个条目(我的版本是4.121.1.0)

      一些咆哮:

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

答案 2 :(得分:4)

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

编辑:现在支持EF6。

答案 3 :(得分:1)

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

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

以下是下载位置: http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html

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

答案 4 :(得分:0)

  

实体框架6代码优先

     

ODAC 12c R3是第一个使用Entity进行认证的ODP.NET版本   框架(EF)6和EF代码优先。 EF Code First很受欢迎   .NET对象关系映射的开发模型。开发商   使用源代码定义应用程序域模型,而不是   使用设计器或基于XML的配置文件。 EF代码优先   model的类是通过Plain Old CLR Objects在代码中定义的   (波苏斯)。

...

  

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

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