前言

上一篇介绍了ABP的一些基础知识,本篇继续介绍ABP的启动模板。使用ABP CLI命令就可以得到这个启动模板,其中包含了一些基础功能模块,你可以基于这个模板来快速开发。

开始

首先ABP CLI的安装以及基本指令这些就不说了,官网上写的很清楚。目前ABP的前端部分只支持ASP.NET Core MVC / Razor Pages和Angular,移动端支持React Native。

初学者建议跟着官网https://docs.abp.io/zh-Hans/abp/latest/Tutorials/Part-1?UI=MVC这个指引做一遍,体验一下ABP开发的基本流程,虽然ABP开发流程几乎都标准化了,照着官网的流程编写代码就能完成一个功能的开发,但是这个过程有些繁琐,容易出错。这里推荐一个开源项目:https://github.com/EasyAbp/AbpHelper.GUI,这是一个ABP帮助工具,你只需要创建一个实体,剩下的代码它都可以帮你生成。这个项目是https://github.com/EasyAbp下的一个子项目,EasyAbp是国内ABP爱好者创建的,里面还有很多开箱即用的模块,可以关注一下。。。

AbpHelper

使用AbpHelper来完成官网的例子非常容易,首先创建项目解决方案:

AbpHelper提供了图形化配置,自动帮我们执行ABP CLI指令:

执行完成后,打开解决方案,先启动Acme.BookStore.DbMigrator项目来初始化数据库:

然后就可以启动Acme.BookStore.Web项目,这是APB启动模板的默认界面:

接下来,在Acme.BookStore.Domain项目中创建Book实体,我直接从官网上复制代码。

public class Book : AuditedAggregateRoot<Guid>
{
public string Name { get; set; } public BookType Type { get; set; } public DateTime PublishDate { get; set; } public float Price { get; set; } protected Book()
{
}
public Book(Guid id, string name, BookType type, DateTime publishDate, float price)
: base(id)
{
Name = name;
Type = type;
PublishDate = publishDate;
Price = price;
}
}

在Acme.BookStore.Domain.Shared项目中添加枚举类BookType:

public enum BookType
{
Undefined,
Adventure,
Biography,
Dystopia,
Fantastic,
Horror,
Science,
ScienceFiction,
Poetry
}

第一次使用需要安装一下AbpHelper CLI:

选择Generate CRUD,填入实体名称和解决方案路径,然后Execute即可:

生成代码时可能会报这个错(如果没装ef tools):

这时安装一下ef tools就好了,dotnet tool install -g dotnet-ef

代码生成完后,运行Acme.BookStore.Web项目:

使用默认用户 admin/1q2w3E* 登录系统,给admin角色分配BookStore相关权限:

然后就可以看到book菜单了,包括基本的增删改查界面:

至此就完成了一个基本功能的开发,AbpHelper确实很方便,他还有CLI版本,直接命令行操作。

模块安装

ABP的模块化可以实现插件式的开发,你可以预先构建一些通用的模块,比如日志模块,用户模块等等,当你以后需要时就可以直接安装到项目中。有一些由ABP社区开发和维护的开源免费的应用程序模块,我们可以直接使用;比如我要使用官方的Blogging模块,Blogging是用于创建精美的博客。

同样使用AbpHelper来安装:

安装过程出了点小问题,提示找不到DbContext。。。不过没关系,自己执行一下迁移命令就行。。。

Acme.BookStore.Web项目设为启动项,默认项目为Acme.BookStore.EntityFrameworkCore.DbMigrations,然后执行:

Add-Migration AddedBlogging

Update-DataBase

接下来再次运行Acme.BookStore.Web项目,为admin角色配置博客相关的权限:

然后就就可以看到博客的相关功能:

Swagger:

当然,这些模块不一定完全符合你的要求,你可能需要稍作修改,ABP也允许你扩展实体,重写服务包括重写用户界面,你可以很方便的修改。这些后面再介绍,包括如何去开发这种模块。。。

最后

EasyAbp上也有很多开源模块,地址是:https://github.com/EasyAbp/EasyAbpGuide,目前这些模块的UI部分都只支持MVC/Razor Pages,不支持Angular之类的。。。当然模块不一定非要UI,一些Framework级别的模块就不需要UI。基础部分就写到这里,主要还是需要认真看下官网,然后自己动手练习一下。下一篇将进入vue+ABP实战部分。

最新文章

  1. less
  2. 【krpano】krpano xml资源解密(破解)软件说明与下载(v1.2)
  3. 【转】安装第三方库出现 Python version 2.7 required, which was not found in the registry
  4. 20145330《Java程序设计》课程总结
  5. Relax NG 在Odoo中的应用
  6. Binary Tree Level Order Traversal
  7. AOP 之 6.1 AOP基础(拾陆)
  8. 格子布局 js
  9. nginx爆出新漏洞 最低限度可造成DDos攻击
  10. 一个可创建读取日志的管理类(可固定创建2M大小的日志文件)
  11. 教你如何用Qt做透明的窗体,setMask, Opacity
  12. oracle expdp和impdp使用例子
  13. 如何让有物理键的手机在ActionBar始终显示更多菜单menu键
  14. bzoj4896 补退选
  15. LeetCode算法题-Construct the Rectangle(Java实现)
  16. Angular 框架下ng-repeat内部使用tooltip插件的办法
  17. IDEA注册码分享
  18. HTML做的网页 如何使当前页面跳转到另一页面锚点处
  19. Java多线程之synchronized线程锁
  20. 修改输入框placeholder的样式

热门文章

  1. X-Tag实战:给博客加一个隐藏侧栏的功能
  2. SQL 给某字段添加汉字却显示??
  3. vue使用elementUI form表单label样式修改
  4. win10里面怎么获取最高管理员权限
  5. [翻译]ASP.NET Core在 .NET 5 Preview 7的更新
  6. 题解 洛谷 P2280 【[HNOI2003]激光炸弹】
  7. 写verilog程序需要注意的地方
  8. 小书MybatisPlus第6篇-主键生成策略精讲
  9. DJANGO-天天生鲜项目从0到1-001-环境框架搭建
  10. GridMask:一种数据增强方法