Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2013 实体框架6(5)与Oracle的连接_Visual Studio 2013_Entity Framework 6_Odp.net_Odac - Fatal编程技术网

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

Visual studio 2013 实体框架6(5)与Oracle的连接,visual-studio-2013,entity-framework-6,odp.net,odac,Visual Studio 2013,Entity Framework 6,Odp.net,Odac,我正试图为在.net中使用Oracle的应用程序套件编写一个数据访问库。我们目前正在使用NHibernate,并且正在考虑迁移,因为它似乎没有得到很好的支持 我正在使用Visual Studio 2013,我们已经构建了Oracle数据库。我们没有写操作来更新它(这是db的领域)。因此,这将不是我们这方面任何计算的一部分 服务器上的客户机是32位的,所以我们现在将继续使用它。它已经是GAC的在那里,没有必要改变它。因此,我们的开发箱上有32位客户机 我已经通过nuget将EntityFramew

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

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

服务器上的客户机是32位的,所以我们现在将继续使用它。它已经是GAC的在那里,没有必要改变它。因此,我们的开发箱上有32位客户机

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

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


有一次我在oracle论坛上读到,我需要将Entity Framework设置为5.0而不是6.0。这很好,但是我该怎么做呢?

ef6还不受ODP.NET的支持。有关更多信息,请参阅发行说明(自述)。EF6将很快得到支持


编辑:EF6现在受支持。

对不起,我遗漏了你的部分问题

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

以下是下载位置:


EF 6.0尚不受支持,但您可以在VS 2013中使用EF5提供程序。因此,我的另一个答案并不相关。

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

安装软件包EntityFramework-版本5.0.0

编辑 我已经有一段时间没有安装我的机器了,但我认为这是我必须做的,希望它能有所帮助

设置:
  • 安装Oracle Instant Client(或为Oracle Home执行的任何操作)
  • 安装ODTwithODAC121012(如果你用谷歌搜索,它应该会出现)
  • 确保您的tnsnames.ora位于Oracle主页的正确位置
  • 设置新的Visual Studio解决方案:
  • 新解决方案(对于我来说,类型为ASP.NET Web应用程序)
  • 按原始答案运行命令
  • 添加类型为类库的新项目(用于模型/实体)
  • 在新项目中,添加ADO.NET实体数据模型类型的新项
  • 在实体数据模型向导中:
  • 数据库中的EF设计器(如果您使用的是现有数据库)
  • 新连接
  • 在数据源中,有(希望)一个Oracle数据库选项
  • 下面,在data provider中,我选择了ODP.NET托管驱动程序
  • 输入user/pass,选择数据源和名称connection
  • 编辑2 哦,我忘了一件事,不确定它是否重要。您可能需要将该模型项目中的引用添加到oracle驱动程序中。右键单击项目->添加->引用->程序集->搜索“oracle”,希望有一个oracle.ManagedDataAccess条目(我的版本是4.121.1.0)

    一些咆哮:
  • 我认为这个过程不应该那么困难
  • 我也不知道为什么要花这么长时间更新。保持对Oracle/Visual Studio的最新更改(他们收费,但Oracle也收费)的控制似乎很好
  • 我脑子里的阴谋部分说甲骨文没有兴趣让你更容易不使用他们的产品,所以他们没有投入任何努力
  • 他们的默认数字映射真的会把你搞砸。例如,如果Oracle DB的字段类型为
    NUMBER(10)
    ,当并非所有10位数字都适合时,它会将其映射为32位整数:(
  • 有关该映射的更多信息(该链接显示如何覆盖该32位问题),请参阅:

  • EF 6支持现在由ODAC 12c第3版Beta版提供:

    来自.Net开发者通讯(emphasis mine):

    新下载:ODAC 12c第3版测试版新的ODAC测试版包括 实体框架6,代码优先,代码优先迁移,.NET框架 4.5.2认证、托管ODP.NET XML数据库和托管ODP.NET分布式事务支持,无需Oracle.ManagedDataAccessDTC.dll

    实体框架6代码优先

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

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


    我认为ODP.NET目前不支持EF6。你可能需要看看DevArt的Oracle提供商。在oracles论坛上,他们说你必须将其设置为EF6到EF5?你怎么知道?对于那些想知道:这回答了如何获得EF5的人来说。你知道,这是相当令人沮丧的。我非常希望创建一个伟大的DAO,以至于我们的应用程序我可能会使用。我可能会尝试NHibernate,但似乎没有很好的教程。有没有关于使用Entity Framework 5.0连接到Oracle的信息?我来得太迟了,但Dapper是一个使用Oracle选项轻松启动和运行的选项。您错过的是ORM设计器部分——但您可以轻松查询到您需要的类你自己动手吧。先用db设计会有点乐趣,但仍然有效。你能用Nuget安装吗,还是用