環境:VS2017 + ABP官方模板(不含Zero) +Oracle 11Gx64DB + Oracle 11Gx32Client(PLSQL工具訪問)
一、Abp項目的下載以及運行
1、創建abp項目。進入官網 https://aspnetboilerplate.com/下載項目模板。abp項目有兩種架構,一種是單頁面(angularjs),另一種是mvc的。點擊創建按鈕。入下圖:
2、對下載的源碼首先進行編譯,讓其自動下載Nuget項目依賴包,保證源碼可以編譯通過。
3、在WinRun2.Core項目中增加User.cs類:
對User實體增加幾個屬性如下:
3、在WinRun2.EntityFramework項目中對WinRun2DbContext類進行修改:
增加DbSet<User>:
增加Oracle數據庫的Schema(默認是dbo,Oracle數據庫必須要修改):
二、Oracle DB 對EF code first的支持
1、在WinRun2.EntityFramework項目增加Oracle EF 驅動的引用,在Nuget中進行安裝:
2、修改WinRun2.Web項目中Web.Config配置信息(也可以在WinRun2.Web中也安裝Oracle.ManagedDataAccess的依賴包,就會自動在Config中生成Oracle配置信息)
三、創建Oracle數據庫Schema
1、首先要保證本地客戶端可以鏈接到Oracle DB服務器,用DBA權限的賬號使用Oracle開發工具或SQLPLUS創建新的Schema信息:
2、登錄cps/oracle@winrun進行測試,查詢所有Table:
3、配置Web.Config中的Oracle鏈接字符串:
TNS配置:
鏈接字符串配置:
四、實現數據遷移
1、add-migration:
2、update-database,此處報錯了:
3、錯誤處理,原因是ODP.NET GAC (Global Assembly Cache)中不存在或版本不一致。
Installing Oracle.ManagedDataAccess.dll to GAC resolved my issue. If you installed Oracle Client or Oracle Database on your machine that might be the cause.
注意路徑,不同的系統版本(Win10)路徑會不一樣:"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\gacutil.exe" /i Oracle.ManagedDataAccess.dll
4、再次update-database,還是報錯了,不過換了一個錯誤:
4、此錯誤說明Oracle驅動已OK,鏈接登錄時報錯,再次解決該問題:
在鏈接字符串中增加Persist Security Info=true 即可。
5、再次遷移,成功了!
6、Oracle數據庫的改變
遷移支持自增長類型(Oracle使用的Trigger+Sequences實現自增長ID)
參考鏈接:
http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/CodeFirst/index.html#overview
http://www.cnblogs.com/freeliver54/p/6951700.html
http://www.cnblogs.com/yuanbeier/articles/6420621.html
http://blog.csdn.net/yangxuilyx/article/details/52561874
https://stackoverflow.com/questions/32006884/entity-framework-seed-method-exception
http://www.cnblogs.com/haight/p/5600756.html