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了
明天開始分析並開始做從數據庫加載的動態菜單、動態權限