標籤:
目前在.net的範圍內,好的而且方便的ORM的真的不是很多,與VS整合方便的也就當屬EntityFramework(以下簡稱EF,不知道為什麼,總EF這個縮寫好不專業)。但是,好多公司使用的又是ORACLE,導致使用EF的時候會出現各種不如意的情況,包括搭建環境的時候,都很蛋疼。最近終於有一個項目上了這種方式,而且很成功,所以,在這裡跟大家分享一下,也希望有問題的地方大家指出來,一起改進。
環境配置由以下幾個重要點:
- Oracle的ODP安裝(包含Oracle調用控制項和Oracle的vs工具)
- Webapi項目的建立
- 微軟EntityFramework6的安裝
- 將Oracle的託管引用改為非託管引用(可以脫離目標環境的位元限制)
ODP.NET的安裝
因為安裝ODP.NET後,我們需要重啟VS,所以,我們先來安裝ODP.NET再來建立項目。
下載oracle的dbac(x86)(不能下載請留言),關掉所有vs,然後安裝下載下來的壓縮包裡面的setup.exe。安裝設定的兩個目錄,一定不要有特殊字元,可以用同一個,@,()等千萬別有。
Webapi項目的建立
開啟vs的建立項目介面,選C#-WEB-ASP.NET MVC,然後填寫項目名稱,選擇項目所在位置,點確定。
繼而彈出新的視窗,按圖中選擇操作:
然後點擊確定,就會開啟一個項目,其它的配置如同其它項目一樣。
引入EntityFramework
開啟工具,選擇Nuget包工具管理,如果圖開啟Nuget包管理器:
選擇聯機,找到entity framework,點安裝,安裝到剛剛我們的WebApi項目中。
引用Oracle的ODP.NET
右擊項目的引用·添加新的引用·在擴充裡面找到Oracle.ManagedDataAccess以及Oracle.ManagedDataAccess.EntityFramework【注意1】。然後確定。此時,項目中就成功引用了這兩個東西。
將如下web.config內容加入到web.config中,注意如果有相同的,則將原有的替換掉。
<configSections> <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <connectionStrings> </connectionStrings> <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> <oracle.manageddataaccess.client> <version number="*"> <settings> <setting name="TNS_ADMIN" value="C:\TNS_ADMIN" /> <setting name="TraceOption" value="1" /> <setting name="PerformanceCounters" value="0" /> </settings> </version> </oracle.manageddataaccess.client>
需要注意的是,[TNS_ADMIN]這個東西後面的value指向的是放TNS檔案的目錄,如果你不是用TNS檔案來管理資料庫的IP地址,而是在連接字串中直接使用IP串連,則可以不寫這個SETTING項。
至此,準備工作全部完成。
【注意1:如果引用的時候找不到Oracle.ManagedDataAccess以及Oracle.ManagedDataAccess.EntityFramework,可以在下面的ODP安裝包中,找到這兩個檔案,解壓出來放到項目裡面,然後直接對這兩個檔案進行引用即可。】
基於Oracle的EntityFramework的WEBAPI2的實現(一)——準備工作