ABP框架EF6鏈接Oracle數據庫手動遷移


環境: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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM