在core层 添加一个model,如图
2、在 EntityFrameworkCore 层的 DbContext 中添加 Menu
3、编译一下 准备把新增的Model迁移到数据库
打开 程序包管理器控制台,默认项目选择 ***.EntityFrameworkCore
执行语句:
(1)Add-Migration add_Menu
(2)Update-Database -Verbose
4、在 Application 层,添加 Menu 的相关类,结构如下:
(1)、
IMenuAppService 继承自 IAsyncCrudAppService
IAsyncCrudAppService的定义:
TEntityDto 和 TUpdateInput 均继承自 IEntityDto<TPrimaryKey>,其实就是这两个model均包含了主键,其它的没啥特别的
其中一个接口是这样定义的,如下:
大致就是 但凡实现了IAsyncCrudAppService这个接口的,都具有这些方法,常见的增删改查都有了。
(2)、
MenuAppService 继承自 AsyncCrudAppService
AsyncCrudAppService 实现了 IAsyncCrudAppService 的相应方法
继承 AsyncCrudAppService,除了给相应的参数外,还需要调用父类的构造函数,父类的构造函数如下:
子类的调用方式:
因为分类只有一个构造函数,并且还有参,所以只能这么调用了。
对应调用父类构造函数这个事儿,自己可以简单测试一下,具体可以看文章:
1、https://blog.csdn.net/Hellen0708/article/details/85268050
2、https://zhidao.baidu.com/question/135452328.html
简单测试:
4个Dto类:
5、前端调用实现
创建控制器,控制器 继承自 MyABPControllerBase
MyABPControllerBase:定义在 MyABP.Web.Core 这个层,继承 AbpController
AbpController:继承 Controller,定义了一些常用的属性 和 自动完成依赖的管理
如果不继承 AbpController,而是直接继承 Controller 的话,会报错。
报错内容:No component for supporting the service MyABP.Web.Mvc.Controllers.MenusController was found
为什么只有继承 AbpController 才可以被访问,下次看了源码再补充了。