zoukankan      html  css  js  c++  java
  • Entity Framework6 with Visual Studio 2013 update3 for Oracle 11g

      2014年7月的时候,写了一篇关于EF5 with visual studio 2010 for oracle 11g的博文 原文地址 :http://www.cnblogs.com/HouZhiHouJueBlogs/p/3844028.html,现在oracle已经支持到EF6了。技术更新快,有些细节如不记录下来,很容易被遗忘,故有此篇博文。

      Oracle 对.net支持的一些基础知识了解介绍

    1.早年的时候,微软自己做的有 System.Data.OracleClient。 现在已经成了过期类了。性能等都不是很好。

    2.Oracle 官方出的odp.net  Oracle.DataAccess.dll(非托管版本) 还要分32/64位。而且很麻烦的是 部署的时候 需要装客户端环境。非常繁琐。

    3.Oracle 官方近年新出的  Oracle.ManagedDataAccess.dll  这个非常给力 不再区分32/64位了。 而且不需要客户端再安装东西了。性能也得到了提高。不管是用ado.net或者其他ORM框架都建议使用此版本dll。这次我们的EF6 也会依据此dll进行开发。 

    官方下载地址是这个 一定要去官方下载最新的 才能支持EF6  我从nuget上下的版本较低 不支持。。

    http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html  (当时下载的版本为4.121.2.0)。下载好后,部署的方式十分简单,进入cmd窗口执行installxx的命令即可,后面会提示参数。

    下载好后  从这个目录下 odp.netmanagedcommon  拿出Oracle.ManagedDataAccess.dll 和 Oracle.ManagedDataAccess.EntityFramework.dll ,已备开发使用。

    使用codefirst需要有相关配置,如下:

    <configSections>
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />  
      </configSections>
    
      <entityFramework>
        <defaultConnectionFactory type="Oracle.ManagedDataAccess.EntityFramework.OracleConnectionFactory,
    Oracle.ManagedDataAccess.EntityFramework,
    Version=6.121.2.0,
    Culture=neutral,
    PublicKeyToken=89b483f429c47342" />
        <providers>
          <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
         
        </providers>
      </entityFramework>
    
      <system.data>
        <DbProviderFactories>
          <remove invariant="Oracle.ManagedDataAccess.Client" />
          <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.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
        </DbProviderFactories>
      </system.data>
    
    <connectionStrings>
    
        <add name="OraString" connectionString="Data Source= (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = *****)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = ORCL)
        )
      );User ID=*****;Password=*****;Persist Security Info=True" providerName="Oracle.ManagedDataAccess.Client" />
    
      </connectionStrings>

    这里还有个注意事项,因为有的人以及装了oracle的客户端。这可能会导致一些错误。这里 请注意检查下  C:WindowsMicrosoft.NETFrameworkv4.0.30319Config

    下的  machine.config (64位的话 路径是 Framework64,最好都检测下)

    machine.config 可以理解为webconfig的父类 所以我们需要检查下里面的内容  是否有:

    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />

    上述配置完成之后,EF6即可投入使用。

    参考链接:

    http://www.cnblogs.com/wlflovenet/p/4187455.html

    http://www.cnblogs.com/yzb305070/p/4251036.html

    oracle 访问的问题:

     http://docs.oracle.com/cd/E56485_01/win.121/e55744/toc.htm

     http://docs.oracle.com/cd/E56485_01/win.121/e55744/entityMigrate.htm#BABEHEFE

  • 相关阅读:
    【程序员日记】快乐的一周嘛(第7期)(财富、快乐、技术)
    zCloud使用技巧:如何使用性能下钻功能分析SQL性能问题
    仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵
    团队一致性的PHP开发环境之Docker
    团队一致性的PHP开发环境之Docker
    团队一致性的PHP开发环境之Docker
    qcow2快照原理
    qcow2快照原理
    qcow2快照原理
    qcow2快照原理
  • 原文地址:https://www.cnblogs.com/HouZhiHouJueBlogs/p/4306347.html
Copyright © 2011-2022 走看看