Entity Framework6 with Oracle(可實現code first)

來源:互聯網
上載者:User

標籤:改版   uri   des   父類   drive   section   build   tor   cli   

Oracle 與2個月前剛提供對EF6的支援。以前只支援到EF5。EF6有很多有用的功能 值得升級。這裡介紹下如何支援Oracle

  一.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)

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

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

  二.修改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

Entity Framework6 with Oracle(可實現code first)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.