首先介紹下項目下的幾個類庫
*****.Application :應用層 編寫自動控制器service的地方
*****.Contracts:存放dto實體(比如儲存資料時不需要儲存id我們dto實體中沒有id屬性)
*****.Domain:領域層 存放實體類
*****.Domain.Shared:了解為共享域(比如存放一些枚舉類)
*****.EntityFrameworkCore:如果使用code first方式此類庫需要映射表
*****.EntityFrameworkCore.DbMigrations: 基礎層 後續做操作更新資料庫使用類庫
EntityFrameworkCore/Test11111DbContext.cs檔案 EntityFrameworkCore/Test11111DbContextModelCreatingExtensions.cs
*****.HttpApi.Host:啟動項目所有控制器存放地。指向swagger
1.首先在.Domain類庫中建立實體
using Volo.Abp.Domain.Entities.Auditing;
Book繼承聚合根
2.在.Shared中建立BookType
3.在.EntityFrameworkCore添加映射
4.在程式包管理器控制台選擇.EntityFrameworkCore.DbMigrations 執行 add-migration "所作的操作",update-database成功後會彈出執行檔案
檢視資料庫生成了AppBooks表
5.在.Application.Contracts建立Dto實體以便後期增删改查使用
using Volo.Abp.Application.Dtos;
BookDto繼承實體Dto
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
官方文檔中提到
- 架構定義應用程式服務的接口不是必需的. 但是,它被建議作為最佳實踐.
定義了常見的CRUD方法:
ICrudAppService
,
GetAsync
,
GetListAsync
,
CreateAsync
和
UpdateAsync
. 你可以從空的
DeleteAsync
接口繼承并手動定義自己的方法(将在下一部分中完成).
IApplicationService
有一些變體, 你可以在每個方法中使用單獨的DTO,也可以分别單獨指定(例如使用不同的DTO進行建立和更新).
ICrudAppService
是以此接口可以不必建立
6.在.Application類庫中的****ApplicationAutoMapperProfile中添加實體對Dto的映射關系,不然調用自動控制器時會報錯