5)內(nèi)容系統(tǒng)表的搭建&自定義倉儲CURD
本來是想使用abp的CMS模塊但發(fā)現(xiàn)里面的東西有點多也不太符合我現(xiàn)有網(wǎng)站的數(shù)據(jù)結(jié)構(gòu),有興趣的小伙伴可下載abp源碼看看,里面有很多值得借鑒的地方


下面列一下個人網(wǎng)站博客框架一些常用的功能(可借鑒abp cms ~):
內(nèi)容
分類
標(biāo)簽
動態(tài)頁面
輪播圖(廣告輪播)
導(dǎo)航菜單(可有可無)
評論 (不需要,后面有空單獨做個評論系統(tǒng)的功能)
在 YiAim.Cms.Domain項目新建 Blogs文件夾用于存放所有cms相關(guān)的實體表
Blog(內(nèi)容)、Category(分類)這里允許文章里面分類為空
Tag 標(biāo)簽
TagMap 標(biāo)簽與文章關(guān)聯(lián)表
??
在YiAim.Cms.EntityFrameworkCore\CmsDbContext 里面的 OnModelCreating 方法配置
?
進(jìn)行數(shù)據(jù)遷移,生成表如下

自定義倉儲接口
在YiAim.Cms.Domain\Blogs文件夾里面新建IRepositories文件夾用于存放blog相關(guān)的自定義倉儲 如:IBlogRepository 繼承IBasicRepository或者 IRepository
abp框架中已經(jīng)默認(rèn)給我們實現(xiàn)了默認(rèn)的通用(泛型)倉儲
IRepository<TEntity, TKey>
,有著標(biāo)準(zhǔn)的CRUD操作,具體可以在:https://docs.abp.io/zh-Hans/abp/latest/Repositories 查看更多 之所以實現(xiàn)自定義倉儲是因為有些東西是abp沒有給我們,如實現(xiàn)批量插入、更新的方法;(微軟官方推薦的EFCore的工具與擴(kuò)展 https://learn.microsoft.com/zh-cn/ef/core/extensions/)
IBlogRepository.cs
既然定義了倉儲那就實現(xiàn),不然調(diào)用的時候會報錯
在YiAim.Cms.EntityFrameworkCore里面新建 Repositories文件夾,里面新建BlogRepository.cs 使用 EF Core 需要繼承?EfCoreRepository<TDbContext, TEntity, TKey>
?和自定義倉儲接口IXxxRepository
BlogRepository.cs
接下來在就可以在.Application服務(wù)層愉快的讀取數(shù)據(jù)了,寫服務(wù)之前,先分析項目需要哪些功能業(yè)務(wù)。由于是個人網(wǎng)站(博客項目),無非就是增刪改查,后期對網(wǎng)站進(jìn)行優(yōu)化是添加緩存、定時任務(wù)之類的功能一個簡單的網(wǎng)站差不多就成型了。
在YiAim.Cms.Application.Contracts定義api接口、DTO模型 (DTO就是從我們的領(lǐng)域模型中抽離出來的對象,它只包含我們要拿的數(shù)據(jù),不參雜任何行為邏輯) 新建Blogs文件夾,然后再來新建IBlogService繼承IApplicationService,里面定義我們業(yè)務(wù)需要的數(shù)據(jù)接口
在YiAim.Cms.Application實現(xiàn)接口
新建Blogs文件夾,然后再來新建BlogService繼承ApplicationService,IBlogService
測試調(diào)用
在Controller中調(diào)用,可以直接注入服務(wù)的方式實現(xiàn) 如:在 YiAim.Cms.HttpApi ,新建Controller
HelloAbpController.cs 繼承 CmsController,CmsController為創(chuàng)建abp項目默認(rèn)有的一個基類,它里面已經(jīng)默認(rèn)繼承了abp的基類
//CmsController
然后運行項目,訪問?https://localhost:44377/HelloAbp/test
?就可以看到結(jié)果了(前提是你的數(shù)據(jù)庫里面有內(nèi)容)


總計 abp的數(shù)據(jù)訪問
1.創(chuàng)建實體,完成實體與數(shù)據(jù)庫表的映射關(guān)系
2.自定義倉儲方法及實現(xiàn)對應(yīng)的讀取方法,一般來說使用abp提供的倉儲方法已經(jīng)夠小型的項目使用
最后,abp提供了 自動API控制器,不需要我們寫controller,直接在服務(wù)層配置就可以自動生成api接口,詳情請看 https://docs.abp.io/zh-Hans/abp/latest/API/Auto-API-Controllers
后面我們的這個項目也基本使用這種模式開發(fā),減少工作量&也方便測試。
在來看一下 自動api控制器生成的api接口,打開swagger就可以看到對應(yīng)api,還可以方便測試。

此時整個項目目錄結(jié)構(gòu)如下:

本章已經(jīng)完成了表的搭建&自定義倉儲CURD,Entity Framework Core的數(shù)據(jù)訪問,由于代碼太多這里就不全部帖出來,相信各位小伙伴都能完成。有需要的也可以直接拉取項目。下章我們將對接vue項目完成UI界面的操作。