Web 应用开发教程(使用 ABP Suite)- 第二部分:创建图书
在这一部分,你将创建一个名为 Book 的新实体,并通过 ABP Suite 为相关实体生成 CRUD 页面以及所有通常需要手动实现的功能(包括应用服务、测试、CRUD 页面、数据库关联等…),整个过程只需几次点击即可完成。
打开 ABP Suite
如果应用当前正在运行,请先在 ABP Studio 的 Solution Runner 面板中停止它,因为 ABP Suite 将修改解决方案,并且在某些步骤中可能需要重新构建解决方案,运行中的应用会阻碍构建过程。
在上一部分创建好解决方案之后,现在你可以打开 ABP Suite 并开始生成 CRUD 页面。你可以在主菜单上选择 ABP Suite -> 打开 命令来启动 ABP Suite:
点击相关命令后,ABP Studio 的内置浏览器应该会打开,然后你就可以开始通过少量配置来生成实体及所有相关代码了:
创建 Book 实体
在创建 Book 实体之前,我们需要先创建一个 BookType 枚举。在 ABP Suite 中定义实体时,此枚举将用作属性类型。因此,请打开你的代码编辑器,在 Acme.BookStore.Domain.Shared\Books 文件夹中创建一个名为 BookType.cs 的新文件,并添加以下内容:
namespace Acme.BookStore.Books;
public enum BookType
{
Undefined, // 未定义
Adventure, // 冒险
Biography, // 传记
Dystopia, // 反乌托邦
Fantastic, // 奇幻
Horror, // 恐怖
Science, // 科学
ScienceFiction, // 科幻
Poetry // 诗歌
}
在你的项目中创建好 枚举 文件后,就可以在 ABP Suite 创建实体时将其用作属性类型了。当你指定一个枚举属性时,ABP Suite 会提示你提供枚举文件的路径。然后它将读取该文件,并自动在生成的代码中设置命名空间和枚举名称。现在,让我们开始创建 Book 实体及其属性。
在 名称 字段中输入 Book,其他选项保持默认。ABP Suite 会自动为你计算其余输入项的适当值:
ABP Suite 设置了以下内容:
- 实体类型为 主实体 (ABP Suite 允许你建立 主子关系),
- 基类为 FullAuditedAggregateRoot (查看其他可能的值),
- 主键类型为 Guid,
- 复数名称、数据库名称、命名空间、页面标题、菜单项等等…
你可以将菜单项的值更改为 book,以便在生成的 UI 中显示合适的图标,同时还可以根据需要启用 代码自定义、创建单元和集成测试 以及其他选项:
在指定了实体元数据之后,打开 属性 选项卡,并创建下图所示的属性:
在定义属性时,你定义了一个类型为 枚举 的 Type 属性。ABP Suite 会要求提供一个枚举路径,并通过读取指定的枚举文件来填充所有其他输入项。因此,你可以为 Type 属性指定枚举路径,如下图所示:
选择枚举文件后,ABP Suite 会自动设置命名空间和枚举名称,并在下一部分列出你的枚举值。你可以更改这些值,但现在可以保持原样。
以下是 Book 实体的所有详细信息:
Name是 必填项,它是一个 字符串 属性,最大长度为 128。Type是一个 枚举,枚举文件路径为 \Acme.BookStore.Domain.Shared\Books\BookType.cs。PublishDate是一个 DateTime 属性,不可为空。Price是一个 float 属性,必填。
其他配置可以保持默认。
ABP Suite 允许你以丰富的选项定义属性,例如,你可以将属性类型指定为 字符串、整型、浮点型、Guid、DateTime,甚至 文件(用于文件上传),同时还可以在定义属性时设置任何选项,例如指定为 必填 或 可为空,设置 最大/最小长度、默认值 等等…
之后,你可以点击 保存并生成 按钮来开始代码生成过程。
ABP Suite 将为你生成必要的代码。它会生成:
Book实体(以及BookBase类,允许你自定义生成的实体),- 仓库实现(
EfCoreBookRepository类), BookManager领域服务,- 输入和输出 DTO 以及 应用服务 实现(
IBookAppService和BookAppService), - 单元和集成测试,
- 新的 迁移(并应用到数据库),
- 所有相关的 权限、对象映射 和 导航菜单项 配置,
- 以及所有必需的 UI 组件和页面…
完成该过程需要一些时间。过程完成后,你将看到一个成功消息,点击 确定 按钮,然后通过点击 Solution Runner 面板中的 启动 按钮(或者直接点击 运行 图标)来运行应用:
应用启动后,你可以在其上右键点击并选择 浏览,在 ABP Studio 的内置浏览器中打开它。使用默认凭据(admin / 1q2w3E*)登录后,你可以看到如下图所示的图书页面:
默认情况下,ABP Suite 不会为实体生成数据种子贡献者,因为你需要手动创建它们。这是有意设计的,因为在开发或生产环境中使用虚拟数据可能不适合你的具体需求。但是,如果你在创建实体时选择了 创建单元和集成测试 选项,你可以在 Acme.BookStore.Domain.Tests 项目下看到示例的数据种子贡献者,以便通过为实体提供初始数据来简化测试过程,我们将在 本教程的第四部分 中看到这一点。
在此页面上,你可以创建一本新书,更新现有的书,删除一本书,将所有记录(或筛选后的记录)导出到 Excel,使用高级筛选部分筛选记录,批量删除多条记录等等。
总结
在这一部分,你创建了一个名为 Book 的新实体,并通过 ABP Suite 使用几次点击为其生成了必要的代码。ABP Suite 为你生成了所有代码,包括 实体、应用服务、数据库关联、单元和集成测试、UI 以及 定义了用于代码自定义的钩子函数。
抠丁客










