Entity Framework6 with Oracle(可實現code first)

  Oracle 與2個月前剛提供對EF6的支持。之前只支持到EF5。EF6有不少有用的功能 值得升級。這裏介紹下如何支持Oraclehtml

  一.Oracle 對.net支持的一些基礎知識瞭解介紹。web

1.早年的時候,微軟本身作的有 System.Data.OracleClient。 如今已經成了過時類了。性能等都不是很好。windows

2.Oracle 官方出的odp.net  Oracle.DataAccess.dll(非託管版本) 還要分32/64位。並且很麻煩的是 部署的時候 須要裝客戶端環境。很是繁瑣。oracle

3.Oracle 官方近年新出的  Oracle.ManagedDataAccess.dll  這個很是給力 再也不區分32/64位了。 並且不須要客戶端再安裝東西了。性能也獲得了提升。無論是用ado.net或者其餘ORM框架框架

   都建議使用此版本dll。此次咱們的EF6 也會依據此dll進行開發。 ide

官方下載地址是這個 必定要去官方下載最新的 才能支持EF6  我從nuget上下的版本較低 不支持。。性能

http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html  (當時下載的版本爲4.121.2.0)ui

下載好後  從這個目錄下 odp.net\managed\common  拿出2最關鍵的dllspa

Oracle.ManagedDataAccess.dll 和 Oracle.ManagedDataAccess.EntityFramework.dll  .net

  二.修改webconfig配置文件

加入以下代碼:

 <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>

 

鏈接字符串以下 記得提供下 providerName 爲 Oracle.ManagedDataAccess.Client

 <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:\Windows\Microsoft.NET\Framework\v4.0.30319\Config

下的  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" />

 

 這樣的內容   若是有  修改版本號Version 爲當前Oracle.ManagedDataAccess.Client版本。 

 

三.注意事項

1.訪問時提示表不存在,有可能權限不夠。須要設置默認的Schema 須要在 OnModelCreating設置

 modelBuilder.HasDefaultSchema(「Schema名」);

2.oracle 的配置是否配置了使用ora方式來訪問。 建議先不使用ora方式,有多是這個方式訪問致使的問題。

3.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

 

 

http://www.cnblogs.com/wlflovenet/p/4187455.html       轉載請註明出處             

相關文章
相關標籤/搜索