通过


添加模型和控制器

下载已完成的项目

在本部分中,你将添加定义数据库实体的模型类。 然后,添加对这些实体执行 CRUD 操作的 Web API 控制器。

添加模型类

在本教程中,我们将使用 Entity Framework(EF)的“Code First”方法创建数据库。 使用 Code First 编写对应于数据库表的 C# 类,EF 将创建数据库。 (有关详细信息,请参阅 Entity Framework 开发方法

首先将域对象定义为 POCO(普通旧 CLR 对象)。 我们将创建以下 POCO:

  • 作者
  • 书籍

在解决方案资源管理器中,右键单击“模型”文件夹。 选择 “添加”,然后选择“ ”。 将类 Author命名为 .

解决方案资源管理器文件夹的屏幕截图,其中突出显示了蓝色的“模型”文件夹,以及黄色突出显示的“添加和类”菜单项。

将Author.cs中的所有样本代码替换为以下代码。

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace BookService.Models
{
    public class Author
    {
        public int Id { get; set; }
        [Required]
        public string Name { get; set; }
    }
}

使用以下代码添加另一个名为 Book的类。

using System.ComponentModel.DataAnnotations;

namespace BookService.Models
{
    public class Book
    {
        public int Id { get; set; }
        [Required]
        public string Title { get; set; }
        public int Year { get; set; }
        public decimal Price { get; set; }
        public string Genre { get; set; }

        // Foreign Key
        public int AuthorId { get; set; }
        // Navigation property
        public Author Author { get; set; }
    }
}

实体框架将使用这些模型来创建数据库表。 对于每个模型,该 Id 属性将成为数据库表的主键列。

在 Book 类中,AuthorId 定义了指向 Author 表的外键。 (为简单起见,我假设每本书都有一个作者。书籍类还包含相关 Author导航属性。 可以使用导航属性访问代码中的相关 Author 内容。 我在第 4 部分中详细介绍导航属性, 即处理实体关系

添加 Web API 控制器

在本部分中,我们将添加支持 CRUD 操作的 Web API 控制器(创建、读取、更新和删除)。 控制器将使用 Entity Framework 与数据库层通信。

首先,可以删除文件控制器/ValuesController.cs。 此文件包含一个示例 Web API 控制器,但本教程不需要它。

解决方案资源管理器窗口的屏幕截图,显示“ValuesControllers.cs”文件被红色高亮,指示该文件必须删除。

接下来,构建项目。 Web API 基架使用反射来查找模型类,因此需要编译的程序集。

在解决方案资源管理器中,右键单击“控制器”文件夹。 选择 “添加”,然后选择“ 控制器”。

解决方案资源管理器窗口的屏幕截图,其中“控制器”文件夹和“添加”菜单项以蓝色和黄色突出显示。

“添加基架 ”对话框中,选择“包含操作的 Web API 2 控制器,使用 Entity Framework”。 单击 添加

“添加基架”对话框的屏幕截图显示了“Web API 2 控制器”,使用“实体框架”选项的操作被突出显示为蓝色。

“添加控制器 ”对话框中,执行以下操作:

  1. Model 类 下拉列表中,选择该 Author 类。 (如果未在下拉列表中看到它,请确保已构建项目。)
  2. 选中“使用异步控制器操作”。
  3. 将控制器名称保留为“AuthorsController”。
  4. 单击 数据上下文类旁边的加号(+)按钮。

“添加控制器”对话框的屏幕截图,其中显示了红色的加号按钮,以及模型类下拉列表中选择的 Author 类。

在“ 新建数据上下文 ”对话框中,保留默认名称,然后单击“ 添加”。

“新建数据上下文”对话框的屏幕截图,其中显示了“新建数据上下文类型”字段中的默认名称。

单击“ 添加” 以完成 “添加控制器 ”对话框。 该对话框向项目添加两个类:

  • AuthorsController 定义 Web API 控制器。 控制器实现客户端用于对作者列表执行 CRUD 操作的 REST API。
  • BookServiceContext 在运行时管理实体对象,包括使用数据库中的数据填充对象、更改跟踪并将数据保存到数据库。 它继承自 DbContext.

解决方案资源管理器窗口的屏幕截图,其中已用红色圆圈标出 AuthorsController.cs 文件和 BookServiceContext.cs 文件。

此时,再次构建项目。 现在,请完成相同的步骤,为 Book 实体添加 API 控制器。 这一次,选择 Book 模型类,并为数据上下文类选择现有 BookServiceContext 类。 (不要创建新的数据上下文。单击“ 添加” 以添加控制器。

“添加控制器”窗口的屏幕截图,显示在“模型类”下拉菜单中选择了 “Book” 模型类。