ABP適配Oracle全過程


一、背景

  ABP的各類文檔在網絡上已經非常完善了,唯獨缺少與oralce相關的資料,ABP官網也未給出一個較好的Oracle解決方案。正好最近在學習ABP相關知識,對ABP源碼結構稍算熟悉,花了些時間進行ABP適配Oracle。

二、准備

  ABP官網 下載ABP模板(選擇.netframework MVC 版本)

  github 下載源碼

  數據庫:Oracle 11g

  開發工具:vs2017

三、鏈接Oracle

  前期工作都准備好后,開搞開搞!!

1、Oracle EF 驅動  

  分別在web和EntityFramework添加oracle ef 引用(install-package Oracle.ManagedDataAccess.EntityFramework),直接安裝該包會自動添加ODP.Net引用

2、鏈接oracle

  oralce依賴添加好后,我們會發現web.config自動添加了oracle連接配置,將我們需要鏈接的數據庫加到上面去(ps:oracle的鏈接字符必須為完整) 配置好數據庫鏈接后,直接運行程序試試看,出現了如下錯誤


3、數據遷移

  既然使用了EF,數據遷移必然少不了,通過執行Add-Migration和update-database指令,查看oracle數據庫里生成出來的數據表都是區分大小寫(注入AbpModules)。通常而言,我們在plsql建數據表,oracle會自動建表名和字段名轉為大寫
顯然code-first生成出來的數據表不是我們想要的,那我們要怎么修改呢?此時,就需要引入源碼,進行源碼改造。

四、源碼改造

1、重寫表名和字段名

  將需要的ABP源碼引入,並修改對應依賴


  找到ABP.Zero.Common類庫,改寫實體,通過特性將所有映射到數據庫的實體名和屬性名改為大寫。


  修改完后,通過數據遷移將數據表生成到數據庫中,得到如下數據表

2、源碼改造

  僅僅只是重寫表名和字段名遠遠達不到我們實際的應用需求,oracle 11g 主鍵無法自增,ABP默認主鍵都是int 自增。這導致無法使用ABP默認的權限管理模塊,那么我們需要將所有表的主鍵都修改為string,然后只需要根據程序報錯提示進行修改。(ps:主鍵此時非自增類型,需要賦值)

五、End

  源碼改造完后,重新進行數據遷移。運行程序,正常顯示登錄界面,但無法登錄,這是因為數據遷移時,部分種子數據無法正常寫入到數據庫,暫時手工寫入基礎數據。輸入admin/123qwe后,正常顯示主界面,角色管理、租戶管理等菜單未顯示,跟蹤后台發現是權限角色無法取到值,后續待完善。


免責聲明!

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



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