添加模型和控制器

下载已完成项目

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

添加模型类

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

首先,我们将域对象定义为 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的导航属性。 可以使用 导航属性访问代码中的相关 Author 。 我在第 4 部分 处理实体关系中详细介绍了导航属性。

添加 Web API 控制器

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

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

解决方案资源管理器窗口的屏幕截图,其中值控制器点 c 文件以红色突出显示,表示必须删除该文件。

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

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

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

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

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

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

  1. “模型类 ”下拉列表中,选择类 Author 。 (如果下拉列表中未列出它,请确保生成 project.)
  2. 选中“使用异步控制器操作”。
  3. 将控制器名称保留为“AuthorsController”。
  4. 单击“ 数据上下文类”旁边的“加 (+) ”按钮。

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

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

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

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

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

解决方案资源管理器窗口的屏幕截图,其中作者控制器点 c s 文件和书籍服务上下文点 c 文件以红色圈圈。

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

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