ABP项目逻辑实现
ABP项目逻辑实现
1. 创建实体 在领域层
到ABPProject.Domain层创建要用到的实体。
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; using Volo.Abp.Domain.Entities.Auditing; namespace ABPProject.Models { [Table("Categories")] public class Category : FullAuditedEntity<Guid> { /// <summary> /// 类别名称 /// </summary> [MaxLength(50), Required] public string CategoryName { get; set; } /// <summary> /// 父级 /// </summary> [Required] public Guid ParentID { get; set; } /// <summary> /// 排序 /// </summary> [Required] public int Sort { get; set; } ///// <summary> ///// 属性列表 ///// </summary> //public IList<AttributeInfo> AttributeInfoList { get; set; } ///// <summary> ///// 属性组列表 ///// </summary> //public IList<AttributeGroup> AttributeGroupList { get; set; } } }
以上可以发现继承了FullAuditedEntity<Guid>
之所以这样是因为可以用到abp框架里的自带的比如ID , IsDeleted,DeleterId,DeletionTime 等等这些字段
2. 在ABPProject.EntityFrameworkCore项目中
ABPProjectDbContext文件中 增加
public DbSet<Category> Categories { get; set; }
执行更新数据库的命令。
在程序包管理控制台中执行
Add-Migration second1
update-database second1
生成数据
3. Dto
在ABPProject.Application.Contracts项目中,添加Dto,Dto是数据传输对象。
这个应该很多人不陌生,就是用来接收前端传过来的数据或者把后端产生的数据转为前端能看的数据。可以通过Automap与后端数据进行数据转换。这里举例接收创建一个Category数据的Dto
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Text; namespace ABPProject.Dto { public class CategoryDto { /// <summary> /// 类别名称 /// </summary> [MaxLength(50, ErrorMessage = "名称最长50"), Required(ErrorMessage = "名称必填")] public string CategoryName { get; set; } /// <summary> /// 父级 /// </summary> [Required(ErrorMessage = "上级必填")] public Guid ParentID { get; set; } /// <summary> /// 排序 /// </summary> [Required(ErrorMessage = "排序必填")] public int Sort { get; set; } } }
通过这个Dto,可以实现数据接收,也能自动实现数据校验
4、在ABPProject.Application层下的ABPProjectApplicationAutoMapperProfile文件里增加映射
CreateMap<CategoryDto, Category>(MemberList.Source);
5、在ABPProject.Application层下创建服务,增加CategoryAppService 服务类
增加 [Authorize] 标签,只有带token才能访问
using ABPProject.Dto; using ABPProject.Models; using Octokit.Internal; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; namespace ABPProject.Service {
[Authorize] public class CategoryAppService:ApplicationService { private readonly IRepository<Category, Guid> _categoryRepository; public CategoryAppService(IRepository<Category, Guid> repository) { _categoryRepository = repository; } /// <summary> /// 创建类别 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task<string> CreateAsync(CategoryDto input) { var category = ObjectMapper.Map<CategoryDto, Category>(input); var categoryAdd = await _categoryRepository.InsertAsync(category); return "操作成功!"; } } }
6. 打开swagger 可查看接口:https://localhost:44385/swagger/index.html
引用:https://www.cnblogs.com/wcoolly/p/13307932.html
项目地址:https://gitee.com/wuxincaicai/abp