vs版本 2019,鏈接資料庫使用Navicat,資料庫MySql abp的官網:https://aspnetboilerplate.com/,我們去Download這裡下載一個模板,需要選好Target Version、輸入項目名字,我這裡使用abp的mvc版本、項目名為AbpLearn下載一份 ...
vs版本 2019,鏈接資料庫使用Navicat,資料庫MySql
abp的官網:https://aspnetboilerplate.com/,我們去Download這裡下載一個模板,需要選好Target Version、輸入項目名字,我這裡使用abp的mvc版本、項目名為AbpLearn下載一份
當前下載下來是5.6版本
解壓後
abp的sln在aspnet-core文件夾下
打開文件夾,雙擊打開sln,第一次載入的時候可能有點慢,請耐心等待nuget包自動載入完畢
AbpLearn.Application:應用層,主要包括定義和前臺進行交互的介面層,調用領域層中對應的介面,預設包括:驗證、配置、多租戶、角色、用戶、Session的一些操作,是整個Web API對外部提供調用的核心介面
AbpLearn.Core:領域層,對現實業務進行抽象,通過調用ORM層的提供的介面來對當前的User、Role、Tenant等一系列的管理操作,並對外提供統一的Manager介面,從而供應用層進行相關的操作,另外還提供了諸如驗證、配置、Feature、本地化等等一些列基礎介面。
AbpLearn.EntityFrameworkCore:ORM層,該層顧名思義是使用EntityFrameworkCore來和SQL Server資料庫進行交互的核心邏輯,包括一些常規的各種CRUD操作,以及通過Model First模式創建資料庫,為資料庫提供種子數據等一系列操作。
AbpLearn.Migrator:提供基於控制台的資料庫遷移工具
AbpLearn.Web.Core:這個部分主要是另外一種WebAPI的訪問方式,和應用層這種直接的映射的方式不同,在當前項目中為了更好地體現REST 風格的API ,我們會在我們的類中繼承自AbpController這個基類,然後在當前的Controller類中通過[Route("api/[controller]/[action]")]這種方式來進行映射關係,這種風格更加符合REST的風格要求,在後面實際的項目中也會儘可能的採用這種方式。
AbpLearn.Web.Host:Swagger UI 集成Web API文檔工具
AbpLearn.Web.Mvc:標準的Asp.Net Core MVC 項目,完整的前後端實現,這一部分將在後續進行一系列的分析和解讀。
引用https://www.cnblogs.com/seekdream/p/9249568.html
abp預設使用EF作為orm,想要添加資料庫的表,需要先添加資料庫和項目中的連接字元串,然後用update-database來生成,先不糾結update-database,按照流程來,在資料庫伺服器上添加一個空庫,比如abplearn,
接下來就是修改資料庫鏈接字元串了,
全局搜索“ConnectionStrings”,
找到有類似
"Default": "Server=localhost; Database=AbpLearnDb; Trusted_Connection=True;"
的地方,將ConnectionStrings的Server修改正確(資料庫鏈接字元串怎麼寫請自行百度)
我這裡選用mysql作為資料庫
鏈接字元串為: "Default": "server=192.168.149.28;port=3306;database=abplearn;user=root;password=testpassword;CharSet=utf8;"
資料庫鏈接字元串設置好
如果是mysql,需要將*.EntityFrameworkCore中原本的sqlserver這個nuget包卸載
然後搜索添加Pomelo.EntityFrameworkCore.MySql包,再將*.EntityFrameworkCore項目/EntityFrameworkCore/AbpLearnDbContextConfigurer.cs中的builder.UseSqlServer修改為builder.UseMySql
將Migrations下麵的文件全部刪除掉,將*.EntityFrameworkCore設置為啟動項目,然後在vs的頭部找到 視圖/其他視窗/程式包管理控制台,打開這個控制臺大概出出現下圖
預設項目最好也設置為*.EntityFrameworkCore,在PM>後依次執行
Add-Migration [name] //這個name隨便命名即可
如我執行Add-Migration newinit後,在Migrations文件夾下生成了
其中20200608140416_newinit(文件名是根據生成時間的,下劃線前面會不同)文件大概是這樣(如果用到的是mysql,但是生成的newinit文件中是SqlServer:ValueGenerationStrategy和SqlServerValueGenerationStrategy,則需要手動批量替換下為MySql:ValueGenerationStrategy和MySqlValueGenerationStrategy)
然後在PM執行
Update-Database //如果資料庫鏈接字元串都正確,將會在資料庫中生成很多表
各個表的定義和欄位意思請查看https://blog.csdn.net/mzl87/article/details/105256180/ ,或查看博客園防丟鏈接https://www.cnblogs.com/wangpengzong/diary/2020/06/09/13081234.html
此時,資料庫中沒有數據,我們運行一下項目,項目將執行*.EntityFrameworkCore項目/EntityFrameworkCore/Seed/SeedHelper.cs的SeedHostDb方法,生成預設的Host和一個預設的租戶Default,並將對應Roles(角色)、Users(用戶)、Permissions(許可權)及其他表數據
但是此時,在瀏覽器中的樣式會出現問題,這個是因為我們沒有對abp的js和css文件進行初始化,初始化的地方在libman.json,右擊libman.json,點擊“還原客戶端庫”後等待較長時間,vs將會從網上對引用的js和css下載下來放到對應文件夾下
還原成功後,再去瀏覽下mvc項目,現在就可以看到完整版的abp了
明天開始分析並開始做從資料庫載入的動態菜單、動態許可權