【Web API系列教程】3.2 — 实战:处理数据(添加模型和控制器)
前言
在本部分中,你将添加用于定义实体的模型类。然后你将添加用于在这些实体上执行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以添加该控制器。
下一篇: PHP库收集
推荐阅读
-
【Web API系列教程】3.4 — 实战:处理数据(处理实体关系)
-
【Web API系列教程】3.8 — 实战:处理数据(显示条目细节)
-
【Web API系列教程】3.1 — 实战:处理数据(创建项目)
-
【Web API系列教程】3.3 — 实战:处理数据(建立数据库)
-
【Web API系列教程】3.10 — 实战:处理数据(发布App到Azure App Service)
-
【Web API系列教程】3.7 — 实战:处理数据(创建UI视图)
-
【Web API系列教程】3.5 — 实战:处理数据(创建数据传输对象)
-
【Web API系列教程】3.3 — 实战:处理数据(建立数据库)
-
【Web API系列教程】3.2 — 实战:处理数据(添加模型和控制器)
-
【Web API系列教程】3.10 — 实战:处理数据(发布App到Azure App Service)