ABP適配Oracle全過程

来源:https://www.cnblogs.com/yuluowuhun/archive/2018/12/05/10063084.html
-Advertisement-
Play Games

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


一、背景

  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後,正常顯示主界面,角色管理、租戶管理等菜單未顯示,跟蹤後臺發現是許可權角色無法取到值,後續待完善。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近在做個微信公眾號的項目,需要將入口放置在公眾號二級菜單內,通過點擊該菜單鏈接後進入到該項目中去,進入到項目後程式會自動通過微信公眾號的API完成用戶的OpenId獲取。需求很簡單,實現起來也不複雜,於是在一番折騰後需求實現了。為此,寫下此文僅為初次接觸的朋友提供個小小的幫助。 ...
  • DataGridView控制項中的各種事件都無法直接響應Cell中內容的變化,包括KeyPress等事件,可以採用下麵方法 註:此方法無法響應Cell中的回車鍵 ...
  • 路由設置 ...
  • 前言: 自從.net core問世之後,就一直想瞭解。但是由於比較懶惰只是斷斷續續瞭解一點。近段時間工作不是太忙碌,所以偷閑寫下自己學習過程。慢慢瞭解.net core 等這些基礎方面學會之後再用.net core寫一個項目,前期文章都是為之後的項目做準備。同時也希望這些基礎文章能幫助更多的想入手 ...
  • IIS配置問題,解決方法: 1. 首先添加MIME類型 擴展名“.svc”,MIME類型 “application/octet-stream” 2、處理程式映射--添加托管處理程式 請求路徑 “.svc” 類型 “System.ServiceModel.Activation.HttpHandler  ...
  • 12月4日,微軟2019開發者大會中發佈了一系列的重磅消息,包含了軟硬體和開源社區的各種好消息是鋪天蓋地,作為一名普通的開發者,我第一時間下載了 .NET Core 2.2 的源碼,針對發佈說明逐條瀏覽,並截取了部分常用的功能進行嘗試,下麵就與大家分享。 ...
  • Net Core 2.2發佈了,關於3.0 Preview1和Windows桌面的詳細信息,官方博客也給出了更新內容。 ...
  • Net Core 2.2發佈了,關於EF Core2.2官方也給出了更新內容,本篇為官方博客翻譯。 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...