项目

本文档有多个版本。请选择最适合您的选项。

UI
Database

Web 应用开发教程(使用 ABP Suite)- 第二部分:创建图书

在这一部分,你将创建一个名为 Book 的新实体,并通过 ABP Suite 为相关实体生成 CRUD 页面以及所有通常需要手动实现的功能(包括应用服务、测试、CRUD 页面、数据库关联等…),整个过程只需几次点击即可完成。

打开 ABP Suite

如果应用当前正在运行,请先在 ABP Studio 的 Solution Runner 面板中停止它,因为 ABP Suite 将修改解决方案,并且在某些步骤中可能需要重新构建解决方案,运行中的应用会阻碍构建过程。

在上一部分创建好解决方案之后,现在你可以打开 ABP Suite 并开始生成 CRUD 页面。你可以在主菜单上选择 ABP Suite -> 打开 命令来启动 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 允许你以丰富的选项定义属性,例如,你可以将属性类型指定为 字符串整型浮点型GuidDateTime,甚至 文件(用于文件上传),同时还可以在定义属性时设置任何选项,例如指定为 必填可为空,设置 最大/最小长度默认值 等等…

之后,你可以点击 保存并生成 按钮来开始代码生成过程。

ABP Suite 将为你生成必要的代码。它会生成:

  • Book 实体(以及 BookBase 类,允许你自定义生成的实体),
  • 仓库实现(EfCoreBookRepository 类),
  • BookManager 领域服务,
  • 输入和输出 DTO 以及 应用服务 实现(IBookAppServiceBookAppService),
  • 单元和集成测试
  • 新的 迁移(并应用到数据库),
  • 所有相关的 权限对象映射导航菜单项 配置,
  • 以及所有必需的 UI 组件和页面

完成该过程需要一些时间。过程完成后,你将看到一个成功消息,点击 确定 按钮,然后通过点击 Solution Runner 面板中的 启动 按钮(或者直接点击 运行 图标)来运行应用:

应用启动后,你可以在其上右键点击并选择 浏览,在 ABP Studio 的内置浏览器中打开它。使用默认凭据(admin / 1q2w3E*)登录后,你可以看到如下图所示的图书页面:

默认情况下,ABP Suite 不会为实体生成数据种子贡献者,因为你需要手动创建它们。这是有意设计的,因为在开发或生产环境中使用虚拟数据可能不适合你的具体需求。但是,如果你在创建实体时选择了 创建单元和集成测试 选项,你可以在 Acme.BookStore.Domain.Tests 项目下看到示例的数据种子贡献者,以便通过为实体提供初始数据来简化测试过程,我们将在 本教程的第四部分 中看到这一点。

在此页面上,你可以创建一本新书,更新现有的书,删除一本书,将所有记录(或筛选后的记录)导出到 Excel,使用高级筛选部分筛选记录,批量删除多条记录等等。

总结

在这一部分,你创建了一个名为 Book 的新实体,并通过 ABP Suite 使用几次点击为其生成了必要的代码。ABP Suite 为你生成了所有代码,包括 实体应用服务数据库关联单元和集成测试UI 以及 定义了用于代码自定义的钩子函数


在本文档中