前言

这两天看了一下ABP,做个简单的学习记录。记录主要有以下内容:

  1. 从官网创建并下载项目(.net core 3.x + vue)
  2. 项目在本地成功运行
  3. 新增实体并映射到数据库
  4. 完成对新增实体的基本增删改查

ABP官网:https://aspnetboilerplate.com/
Github:https://github.com/aspnetboilerplate

创建项目

进入官网

Get started,选择前后端技术栈,我这里就选.net core 3.x和vue。

填写自己的项目名称,邮箱,然后点create my project就可以下载项目了。

解压文件

运行项目

后端项目

首先运行后端项目,打开/aspnet-core/MyProject.sln

改一下MyProject.Web.Host项目下appsettings.json的数据库连接字符串,如果本地安装了mssql,用windows身份认证,不改也行

数据库默认是使用mssql的,当然也可以改其他数据库。

将MyProject.Web.Host项目设置为启动项,打开程序包管理器控制台,默认项目选择DbContext所在的项目,也就是MyProject.EntityFrameworkCore。执行update-database

数据库已成功创建:

Ctrl+F5,不出意外,浏览器就会看到这个界面:

前端项目

后端项目成功运行了,下面运行一下前端项目,先要确保本机有nodejs环境并安装了vue cli,这个就不介绍了。

/vue目录下打开cmd执行:npm install

install完成后执行:npm run serve

打开浏览器访问http://localhost:8080/,不出意外的话,会看到这个界面:

使用默认用户 admin/123qwe 登录系统:

至此,前后端项目都已成功运行。
那么基于abp的二次开发该从何下手呢,最简单的,比如要增加一个数据表,并且完成最基本CRUD该怎么做?

新增实体

实体类需要放在MyProject.Core项目下,我新建一个MyTest文件夹,并新增一个Simple类,随意给2个属性。

我这里继承了abp的Entity类,Entity类有主键ID属性,这个泛型int是指主键的类型,不写默认就是int。abp还有一个比较复杂的FullAuditedEntity类型,继承FullAuditedEntity的话就有创建时间,修改时间,创建人,修改人,软删除等字段。这个看实际情况。

public class Simple : Entity<int>
{public string Name { get; set; }public string Details { get; set; }
}

修改MyProject.EntityFrameworkCore项目的/EntityFrameworkCore/MyProjectDbContext:

public class MyProjectDbContext : AbpZeroDbContext<Tenant, Role, User, MyProjectDbContext>
{/* Define a DbSet for each entity of the application */public DbSet<Simple> Simples { get; set; }public MyProjectDbContext(DbContextOptions<MyProjectDbContext> options): base(options){}protected override void OnModelCreating(ModelBuilder modelBuilder){base.OnModelCreating(modelBuilder);modelBuilder.Entity<Simple>(p =>{p.ToTable("Simples", "test");p.Property(x => x.Name).IsRequired(true).HasMaxLength(20);p.Property(x => x.Details).HasMaxLength(100);});}
}

然后就可以迁移数据库了,程序包管理器控制台执行:add-migration mytest1update-database

刷新数据库,Simples表已生成:

实体的增删改查

进入MyProject.Application项目,新建一个MyTest文件夹

Dto

CreateSimpleDto,新增Simple数据的传输对象,比如ID,创建时间,创建人等字段,就可以省略

public class CreateSimpleDto
{public string Name { get; set; }public string Details { get; set; }
}

PagedSimpleResultRequestDto,分页查询对象

public class PagedSimpleResultRequestDto : PagedResultRequestDto
{/// <summary>/// 查询关键字/// </summary>public string Keyword { get; set; }
}

SimpleDto,这里跟CreateSimpleDto的区别就是继承了EntityDto,多了个ID属性

public class SimpleDto : EntityDto<int>
{public string Name { get; set; }public string Details { get; set; }
}

SimpleProfile,用来定义AutoMapper的映射关系清单

public class SimpleProfile : Profile
{public SimpleProfile(){CreateMap<Simple, SimpleDto>();CreateMap<SimpleDto, Simple>();CreateMap<CreateSimpleDto, Simple>();}
}

Service

注意,类名参考abp的规范去命名。

ISimpleAppService,Simple服务接口。我这里继承IAsyncCrudAppService,这个接口中包含了增删改查的基本定义,非常方便。如果不需要的话,也可以继承IApplicationService自己定义

public interface ISimpleAppService : IAsyncCrudAppService<SimpleDto, int, PagedSimpleResultRequestDto, CreateSimpleDto, SimpleDto>
{}

SimpleAppService,Simple服务,继承包含了增删改查的AsyncCrudAppService类,如果有需要的话可以override这些增删改查方法。也可以继承MyProjectAppServiceBase,自己定义。

public class SimpleAppService : AsyncCrudAppService<Simple, SimpleDto, int, PagedSimpleResultRequestDto, CreateSimpleDto, SimpleDto>, ISimpleAppService
{public SimpleAppService(IRepository<Simple, int> repository) : base(repository){}/// <summary>/// 条件过滤/// </summary>/// <param name="input"></param>/// <returns></returns>protected override IQueryable<Simple> CreateFilteredQuery(PagedSimpleResultRequestDto input){return Repository.GetAll().WhereIf(!input.Keyword.IsNullOrWhiteSpace(), a => a.Name.Contains(input.Keyword));}
}

接口测试

重新运行项目,不出意外的话,Swagger中就会多出Simple相关的接口。

  • Create


  • Get


  • GetAll


  • Update


  • Delete


总结

ABP是一个优秀的框架,基于ABP的二次开发肯定会非常高效,但前提是需要熟练掌握ABP,弄清楚他的设计理念以及他的一些实现原理。

以后有时间的话再深入学习一下。文中如果有不妥之处欢迎指正。

ABP(ASP.NET Boilerplate Project)快速入门相关推荐

  1. 什么是ASP.NET Boilerplate Project(ABP)框架

    使用.NET技术进行开发已经多年,偶尔一次网络上搜索.NET开发框架,看到了ABP这个框架,引起了我极大的兴趣,于是决定对该框架进行深入学习和研究,并将过程全部记录如下,对自己也是一次学习和总结,同时 ...

  2. abp angular 和mvc_什么是ASP.NET Boilerplate Project(ABP)框架

    使用.NET技术进行开发已经多年,偶尔一次网络上搜索.NET开发框架,看到了ABP这个框架,引起了我极大的兴趣,于是决定对该框架进行深入学习和研究,并将过程全部记录如下,对自己也是一次学习和总结,同时 ...

  3. ASP.NET Boilerplate Project(ABP)

    什么是ASP.NET Boilerplate Project(ABP)框架 使用.NET技术进行开发已经多年,偶尔一次网络上搜索.NET开发框架,看到了ABP这个框架,引起了我极大的兴趣,于是决定对该 ...

  4. Yocto Project 快速入门指南

    原文:http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html Yocto Project 快速入 ...

  5. RoadFlow ASP.NET Core工作流快速入门

    RoadFlow新建一个流程分为以下几步: 1.建表 在数据库建一张自己的业务表(根据你自己的业务需要确定表字段,如请假流程就有,请假人.请假时间.请假天数等字段),数据表必须要有一个主键,主键类型是 ...

  6. ASP.NET2.0的快速入门站点

    目前还没有中文版,英文版的地址如下: http://beta.asp.net/QuickStart/default.aspx 转载于:https://www.cnblogs.com/kary/arch ...

  7. ASP.NET Boilerplate

    ABP vNext是ASP.NET Boilerplate 的下一代框架,是基于.Net Core的全新架构. ASP.NET Boilerplate是一个Web应用程序的通用框架基于域驱动设计的分层 ...

  8. 从ASP.NET Boilerplate v5 +到ABP框架的迁移

    文章目录 介绍 我应该迁移吗? 那ASP.NET Zero呢? ASP.NET MVC 5.x项目 迁移进度 创建解决方案 关于预构建模块 领域层 聚合根和实体 复合主键 聚合根 迁移现有实体 文献资 ...

  9. apache2.4.9 开启path_info访问_【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)...

    新建项目 打开VS2015,找到菜单项[文件->新建->项目],打开向导对话框: 注意我们的选择项: 运行平台:.NET FrameWork 4.5 项目模板:ASP.NET Web Ap ...

最新文章

  1. selenium+Headless Chrome实现不弹出浏览器自动化登录
  2. POJ3278Catch That Cow(BFS)
  3. C# 连接 Oracle 的几种方式
  4. Spring Boot Oauth2安全性
  5. LintCode: Search A 2d Matrix
  6. 电信计算机知识考试,2020中国电信考试试题——专业知识一
  7. 我的电脑属性被隐藏 咋能显示
  8. android 关闭jack_安卓编译 Jack server 错误问题解决办法
  9. Magic Trackpad 2 on win10 x64
  10. 硅谷产品联盟合伙人:每一个伟大产品的背后
  11. 【王者荣耀】入门战斗经验
  12. (翻译)锚定效应(Anchoring)
  13. 年薪45万阿里程序员想跳槽vivo,当他晒出期望工资,以为我看错了
  14. 大内高手 内存管理器
  15. CENTOS6 安装配置 pptpd 心得
  16. java下载网站图片代码_java下载网上的图片到本地
  17. webserver有哪些?
  18. Excel VBA 实现Ribbon自定义功能区
  19. 机器学习篇——MNIST手写数字识别
  20. win10服务器网页打不开怎么办,Win10电脑有网但浏览器打不开网页怎么办?

热门文章

  1. 三. SpringBoot原理
  2. 2014百度校招开发测试工程师笔试题
  3. 提示信息弹出(toast)
  4. 交流电机直接转矩控制仿真设计
  5. Python出现Non-ASCII character '\xe6' in file错误解决方法
  6. Jitsi视频会议部署(一):总结
  7. 笔记-Mac清理dns缓存
  8. IDEA中Git简单入门
  9. JavaWeb的学习(下)
  10. c 连接mysql.mwb_MySQL 示例数据库sakila-db的安装