前言

在本部分中,你将添加用于定义实体的模型类。然后你将添加用于在这些实体上执行crud(create、retrieve、update、delete——译者注)操作的web api 控制器。

添加模型类

在本教程中,我们将通过使用“code first”的方法对实体框架(ef)来创建数据库。对于code first,你写c#类来相应数据库表,使用ef来创建数据库。(有关详细信息,见entity framework development approaches.)

首先,我们定义我们的域对象作为poco。我们将创建以下poco:
author
book

在解决方案资源管理中,右击models文件夹。选择add,然后选择class。名为这个类为author。

用以下代码替换authz喎?/kf/ware/vc/” target=”_blank” class=”keylink”>vci5jc9bqtctl+dpq0fmw5bt6wuuhozwvcd4ncjxwcmugy2xhc3m9″brush:java;”> 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; }
    }
}

entity framework将使用这些模型来创建数据库表。对于每一个模型,id属性将变成数据库表的主键列。

在book类中,authorid定义了一个外键到author表。(简单起见,我假定每本书只有一个作者。)该book类还包含一个导航属性给相关的author。 你可以使用导航属性在代码中访问相关的作者。我在/article/details/50751577 ” target=”_blank”>【web api系列教程】3.4 — 实战:处理数据(处理实体关系)
中描述了关于导航属性的更多信息。

添加web api 控制器

在这部分,我们将添加支持crud(create, read, update 和 delete)的web api 控制器。这些控制器使用entity framework来同数据库层交流。

首先,你应该删除controllers目录下的valuescontrollers.cs文件。这个文件包含了一个web api示例,但对于本教程你并不需要它。

然后,编译这个项目。web api框架使用反射来发现这个模型类,所以它需要编译程序集。

在solution explorer中,右击controllers文件夹。选择add,然后选择controller。

在add scaffold对话框中,选择“web api 2 controller with actions, using entity framework”。点击add。

在add controller对话框中,执行以下操作:
1, 在模型类下拉框中,选择author类。(如果你没有在下拉框中看到它,请确保已经编译了这个项目。)
2, 选中“use async controller action”。
3, 保留控制器名称为“authorscontroller”。
4, 点击加号(+)按钮下一步到data context class.

在new data context对话框中,保留默认名称并点击add。

点击add以完成add controller对话框。这个对话将添加两个类到你的项目中:
authorscontroller定义了一个web api控制器。这个控制器实现了rest api,客户端使用它来在authors列表上执行crud操作。
bookservicecontext在运行时管理实体对象,包括从数据库中聚集对象数据、追踪、保留数据到数据库。它继承自dbcontext。

在这个节点上,再次编译这个项目。现在再过一遍相同的步骤为book实体添加api控制器。这次选择book作为模型类,并选择已经存在的bookservicecontext类作为数据上下文类。(不要再创建新的数据上下文。)点击add以添加该控制器。