目前在.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安裝包中,找到這兩個文件,解壓出來放到項目里面,然后直接對這兩個文件進行引用即可。】
轉載請注明作者及來源:張峻崎,博客園