ABP框架之CRUD简单示例
2022/7/25 23:23:11
本文主要是介绍ABP框架之CRUD简单示例,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
最近在学习ABP框架,打算通过一个简单的增删改查示例来快速入门,厘清整个框架的层次逻辑。
1. 前期准备
1.1 创建项目
进入这里下载ABP启动模板:
选择 Multi Page Web Application
创建项目
解压下载好的压缩包,使用 visual studio
打开解决方案(即College.sln文件)
1.2 使用 MySQL 数据库
ABP 项目初始化后默认使用的是 SQL Server
数据库,要使用 MySQl
数据库需要进行一些配置。
1.2.1 移除并安装相关套件
- 在College.EntityFrameworkCore下移除 xxxx.SqlServer
- 在College.EntityFrameworkCore下移除 Microsoft.EntityFrameworkCore.Design
- 在College.EntityFrameworkCore下安装 Pomelo.EntityFrameworkCore.MySql
- 在College.EntityFrameworkCore下安装 Pomelo.EntityFrameworkCore.MySql.Design
- 在College.Web.Host下移除 Microsoft.EntityFrameworkCore.Design
- 在College.Web.Host下安装 Microsoft.EntityFrameworkCore.Tools
1.2.2 配置 MySQL 数据库的连接
- 按下面三张截图修改数据库连接字符串
- 修改College.EntityFrameworkCore下的EntityFrameworkCore文件夹下的CollegeDbContextConfigurer.cs
1.2.3 初始化数据库
- 删除College.EntityFrameworkCore下的Migrations文件夹
- 设置 College.Web.Host 为启动项
- 打开程序包管理控制台,选择EntityFrameworkCore
- 依次输入下列命令
Add-Migration "AbpZero_Initial" Update-Database "AbpZero_Initial"
出现下图的信息则意味成功:
打开数据库,可以发现数据库已经创建
1.2.4 迁移数据库
- 设置College.Migrator为启动项
- 运行,输入Y,回车
- 大功告成
1.3 启动项目
- 设置College.Web.Host为启动项目
- 运行,出现下图情况则说明配置成功
- 测试一下API
授权,账号为admin,密码是123qwe
返回状态码200
说明请求成功
- 设置College.Web.Mvc为启动项目
- 运行,出现下图界面说明整个项目都没有问题
- 发现样式不对,是因为缺少libs,按照下图操作,再重新启动就好了
- 登录,界面显示如下图,到这里准备工作就完成了
2. 领域层创建实体
在领域层(即College.Core)下创建文件夹 Entities, 用于存放实体
在Entities下创建实体类 Course.cs 用于创建课程信息
using Abp.Domain.Entities; using Abp.Domain.Entities.Auditing; using Abp.Timing; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; namespace College.Entities { public class Course : Entity<int>, IHasCreationTime { public Course () { this.Code = string.Empty; this.DepartmentCode = string.Empty; this.Name = string.Empty; this.Credits = 0; this.Description = string.Empty; this.Status = 0; this.CreateDate = null; this.CreateName = string.Empty; this.UpdateDate = null; this.UpdateName = string.Empty; this.CreationTime = Clock.Now; } /// <summary> /// 课程编号 /// </summary> [StringLength(50)] public string Code { get; set; } /// <summary> /// 院系编号 /// </summary> [StringLength(50)] public string DepartmentCode { get; set; } /// <summary> /// 课程名称 /// </summary> [StringLength (150)] public string Name { get; set; } /// <summary> /// 课程积分 /// </summary> [Range(0, 5)] public int Credits { get; set; } /// <summary> /// 备注 /// </summary> [StringLength(200)] public string Description { get; set; } /// <summary> /// 状态 /// </summary> public int? Status { get; set; } /// <summary> /// 创建日期 /// </summary> public DateTime? CreateDate { get; set; } /// <summary> /// 创建人 /// </summary> [StringLength(50)] public string CreateName { get; set; } /// <summary> /// 修改日期 /// </summary> public DateTime? UpdateDate { get; set; } /// <summary> /// 修改人 /// </summary> [StringLength(50)] public string UpdateName { get; set; } public DateTime CreationTime { get; set; } } }
3. 基础设施层更新数据库
在基础设施层(即College.EntityFrameworkCore\EntityFrameworkCore\CollegeDbContext.cs)添加一行 public DbSet<Course> courses { get; set; } // 创建 courses 表
using Microsoft.EntityFrameworkCore; using Abp.Zero.EntityFrameworkCore; using College.Authorization.Roles; using College.Authorization.Users; using College.MultiTenancy; using College.Entities; namespace College.EntityFrameworkCore { public class CollegeDbContext : AbpZeroDbContext<Tenant, Role, User, CollegeDbContext> { /* Define a DbSet for each entity of the application */ public CollegeDbContext(DbContextOptions<CollegeDbContext> options) : base(options) { } public DbSet<Course> courses { get; set; } } }
打开程序包管理工具,项目选择 EntityFrameworkCore,依次执行下列命令
Add-Migration 'AddCourse' Update-Database -Verbose
看到数据库已经有 course
表则说明创建成功
4.
参考
- 后端 ABP (ASP.NET Boilerplate) 应用程序开发框架 改用 MySql
- ABP入门教程6 - 领域层创建实体
这篇关于ABP框架之CRUD简单示例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27文件掩码什么意思?-icode9专业技术文章分享
- 2024-12-27如何使用循环来处理多个订单的退款请求,代码怎么写?-icode9专业技术文章分享
- 2024-12-27VSCode 在编辑时切换到另一个文件后再切回来如何保持在原来的位置?-icode9专业技术文章分享
- 2024-12-27Sealos Devbox 基础教程:使用 Cursor 从零开发一个 One API 替代品 审核中
- 2024-12-27TypeScript面试真题解析与实战指南
- 2024-12-27TypeScript大厂面试真题详解与解析
- 2024-12-26怎么使用nsenter命令进入容器?-icode9专业技术文章分享
- 2024-12-26导入文件提示存在乱码,请确定使用的是UTF-8编码怎么解决?-icode9专业技术文章分享
- 2024-12-26csv文件怎么设置编码?-icode9专业技术文章分享
- 2024-12-25TypeScript基础知识详解