一、環境
- Microsoft Visual Studio Professional 2019:
版本 16.7.3
- Abp :
3.1
- dotnet資訊
C:\Users\xxx>dotnet --info
.NET Core SDK(反映任何 global.json):
Version: 3.1.402
Commit: 9b5de826fd
運作時環境:
OS Name: Windows
OS Version: 10.0.19041
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\3.1.402\
Host (useful for support):
Version: 3.1.8
Commit: 9c1330dedd
.NET Core SDKs installed:
2.1.801 [C:\Program Files\dotnet\sdk]
3.1.201 [C:\Program Files\dotnet\sdk]
3.1.402 [C:\Program Files\dotnet\sdk]
二、安裝步驟
2.1.安裝ABP CLI
C:\Users\xxx>dotnet tool install -g Volo.Abp.Cli
已安裝工具“volo.abp.cli”。
很奇怪,提示已經安裝工具,不記得自己什麼時候安裝過。那就更新下:
C:\Users\xxx>dotnet tool update -g Volo.Abp.Cli
工具“volo.abp.cli”已成功從版本“2.7.0”更新到版本“3.1.2”。
從2.7.0更新到了3.1.2
2.2.建立項目
首先切換到準備建立項目的位置,假設是:E:\Projects\dotnet\abp>
C:\Users\xxx>e:
E:\>cd E:\Projects\dotnet
E:\Projects\dotnet>mkdir abp
E:\Projects\dotnet>cd abp
E:\Projects\dotnet\abp>
建立項目:
E:\Projects\dotnet\abp>abp new Sudo.AbpDemo
此時在“E:\Projects\dotnet\abp>”下生成了項目及解決方案。
打開解決方案,發現src下共有10個項目(UI采用的MVC/Razor Pages模式)。
三、切換至MySQL
abp CLI建構的項目預設使用了SqlServer資料庫。下面就介紹如何切換為使用MySql資料庫。
3.1.修改資料庫連接配接字元串
在Sudo.AbpDemo.Web項目中,打開其中“appsetting.json”檔案,修改其中連接配接字元串為MySql格式,例子如下:
"ConnectionStrings": {
"Default": "server=localhost;port=3306;database=testdb;User ID=root;Password=123456;"
},
同時也将Sudo.AbpDemo.DbMigrator項目中“appsetting.json”檔案裡的資料庫連接配接字元串進行相應修改。
3.2.EntityFrameworkCore資料庫支援包替換
管理“Sudo.AbpDemo.EntityFrameworkCore”項目中Nuget程式包,解除安裝其中的“Volo.Abp.EntityFrameworkCore.SqlServer”包,并浏覽安裝“Volo.Abp.EntityFrameworkCore.MySQL”程式包。
3.3.将代碼“UseSqlServer”替換為“UseMysql"
有兩部分(Ctrl+F查找UseSqlServer亦可)需要修改:
1.“Sudo.AbpDemo.EntityFrameworkCore”項目中的AbpDemoEntityFrameworkCoreModule.cs檔案
Configure<AbpDbContextOptions>(options =>
{
/* The main point to change your DBMS.
* See also AbpDemoMigrationsDbContextFactory for EF Core tooling. */
options.UseSQLServer();
});
修改為:
Configure<AbpDbContextOptions>(options =>
{
/* The main point to change your DBMS.
* See also AbpDemoMigrationsDbContextFactory for EF Core tooling. */
options.UseMySQL();
});
将依賴項目:
修改為:
2.“Sudo.AbpDemo.EntityFrameworkCore.DbMigrations”項目中的AbpDemoMigrationsDbContextFactory.cs檔案:
var builder = new DbContextOptionsBuilder<EyinzhangMigrationsDbContext>()
.UseSqlServer(configuration.GetConnectionString("Default"));
修改為:
var builder = new DbContextOptionsBuilder<AbpDemoMigrationsDbContext>()
.UseMySql(configuration.GetConnectionString("Default"));
3.4.重新生成遷移
Mysql配置的修改基本完成,項目編譯應該也不會有錯誤提示了。打開程式包管理控制台,将預設項目設定為“Sudo.AbpDemo.EntityFrameworkCore.DbMigrations”。
3.4.1移除原有遷移
輸入Remove-Migration指令移除遷移。若執行成功,那麼在“Sudo.AbpDemo.EntityFrameworkCore.DbMigrations”項目的Migrations檔案夾下的原來檔案将被移除。
PM> Remove-Migration
Build started...
Build succeeded.
3.4.2添加遷移
PM> Add-Migration
位于指令管道位置 1 的 cmdlet Add-Migration
請為以下參數提供值:
Name: init
Build started...
Build succeeded.
To undo this action, use Remove-Migration.
此時在Migrations檔案夾下生成了新的遷移檔案。
3.4.3 執行遷移
3.4.3.1 運作 Sudo.AbpDemo.DbMigrator
項目
Sudo.AbpDemo.DbMigrator
将“Sudo.AbpDemo.DbMigrator”項目設定為啟動項目,運作本控制台應用。顯示:
[22:22:20 INF] Started database migrations...
[22:22:20 INF] Migrating schema for host database...
[22:22:26 INF] Executing host database seed...
[22:22:32 INF] Successfully completed host database migrations.
[22:22:32 INF] Successfully completed database migrations.
如下圖:
看看資料庫,已經在資料庫中生成了一堆表。
3.4.3.2 執行 update-database
update-database
PM> update-database
Build started...
Build succeeded.
No migrations were applied. The database is already up to date.
Done.
說明之前已經執行成功。
3.4.3.3 二者差別
官方文檔對此有說明:
四、運作系統
将“Sudo.AbpDemo.Web”設定為啟動項目并運作。如果按照之前的步驟,不出意外的話,就可以看到這個歡迎頁面了:
點選【登入】按鈕就可以看到下面的登入界面。系統已經預設有一個名為
admin
的使用者,密碼是:
1q2w3E*
五、參考文章
- Abp.io官方文檔——Getting-Started
- abp vNext 使用MySql資料庫配置說明