標籤:
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.net\managed\common 拿出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:\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" />
上述配置完成之後,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
Entity Framework6 with Visual Studio 2013 update3 for Oracle 11g