ABP框架(asp.net core 2.X+Vue)模板專案學習之路(二)--切換MySql資料庫
前言:
大家好,今天給大家帶來ABP第二篇的分享,在寫這篇分享的時候非常的困難,因為發現ABP的框架越是深入、難度也就越大,而且深刻感覺到自己領域驅動開發知識的欠缺,前段時間買了兩本有關於領域驅動知識的資料,一本是領域驅動之父Eric Evans寫的《領域驅動設計》、一本是Vaughn Vernon寫的《實現領域驅動設計》,就目前而言,看了並沒有幾張,再次默默的自我檢討3分鐘,下面迴歸正文:
在ABP系統框架中,後臺程式碼分為了幾層,以下是層級的註釋:
- MyABPProject.Application:應用服務層,包含各個應用的邏輯
- MyABPProject.Core:專案的核心層,在領域驅動分層中,應該屬於領域層
- MyABPProject.EntityFrameworkCore:基於EntityFrameworkCore的封裝,連線資料庫,屬於倉儲基礎設施層
- MyABPProject.Migrator:資料庫遷移工具
- MyABPProject.Web.Core:專案的展現層,封裝展現層所用到的工具
- MyABPProject.Web.Host:專案的動態API介面以及Swagger
今天主要是寫下資料庫切換的問題,一開始,專案剛剛下載下來的時候,預設使用的是SqlServer資料庫,按照上一篇的文章寫的那樣,資料庫還原->執行專案,順風順水可以將專案執行起來,因為現在專案的變化,需要更改資料庫,將由MySql代替SqlServer,故此分為了以下的幾個步驟:
- 首先刪除MyABPProject.EntityFrameworkCore專案下關於SqlServer的一些引用類庫,需要刪除的類庫如下:
- Microsoft.EntityFrameworkCore.SqlServer
- Microsoft.EntityFrameworkCore.Design
- 新增MySql的引用類庫,MySql需引用類庫如下:
- Pomelo.EntityFrameworkCore.MySql.Design
- Pomelo.EntityFrameworkCore.MySql
- 註釋MyABPProject.Web.Host和MyABPProject.Migrator專案中的“appsettings.json”檔案下SqlServer資料庫字串,新增MySql資料庫字串
- 在整個解決方案中將字串“SqlServerValueGenerationStrategy”替換成“MySqlValueGenerationStrategy”
- 在整個解決方案中將字串“UseSqlServer”替換成“UseMySql”
- 刪除MyABPProject.EntityFrameworkCore專案中“Migrations”這個資料夾下所有遷移檔案
- 通過程式包管理控制檯根據命令“Add-Migration "XXX"”重新生成遷移檔案
- 生成成功後,根據命令“Update-Database”還原MySql資料庫
- 重啟啟動專案,即可完成!
為什麼選擇“Pomelo.EntityFrameworkCore.MySql”:
MySql/MariaDB 推薦使用Pomelo EF Core元件,官方引用檔案目前可能存在bug,Pomelo EF Core同樣是微軟官方所推薦的。