手机版

ASP .网络应用编程接口教程创建管理控制器实例分享

时间:2021-10-07 来源:互联网 编辑:宝哥软件园 浏览:

在本节中,我们将添加一个支持产品的CRUD(创建、读取、更新和删除)操作的网络应用编程接口控制器。控制器将使用实体框架与数据库层通信。只有管理员才能使用此控制器。客户将通过另一个控制器访问产品。在本小节中,我们要添加一个对产品支持CRUD(创建、读取、更新和删除)操作的网络应用编程接口控制器。该控制器将使用实体框架与数据库层进行通信。只有管理员才能够使用这个控制器。客户端将通过另一个控制器访问产品在解决方案资源管理器中,右键单击控制器文件夹。选择添加,然后选择控制器。在"解决方案资源管理器"中右击控制器文件夹,选择"添加",然后选"控制器"(见图2-16)。WebAPI2-16

图2-16.添加控制器在添加控制器对话框中,命名控制器管理控制器。在"模板"下,选择"具有读/写操作的应用编程接口控制器,使用实体框架"。在模型类下,选择"产品"(产品存储。模型)。在"数据上下文"下,选择"新数据上下文"。在"添加控制器"对话框中,将此控制器命名为管理控制器。在"模板"下选择"带有读/写动作的应用程序接口控制器(用实体框架)"。在"模型类"下选择"产品(产品存储。车型)" .在"数据上下文"下选择"新数据上下文"(见图2-17)。WebAPI2-17

图2-17.添加控制器对话框中的设置如果"模型类"下拉列表没有显示任何模型类,请确保您编译了项目。实体框架使用反射,因此它需要编译后的程序集。如果"模型类"下拉列表未显示任何模型类,请确保已编译了此项目。实体框架使用反射,因此它需要已编译的程序集选择"新数据上下文"将打开"新数据上下文"对话框。命名数据上下文产品商店。模特。订单上下文选择"新数据上下文"会打开"新数据上下文"对话框。将该数据上下文命名为产品商店。模型。订单文本(见图2-18)。WebAPI2-18

图2-18.命名"新数据上下文"单击"确定"关闭"新建数据上下文"对话框。在"添加控制器"对话框中,单击"添加"。点击"好的"退出这个"新数据上下文"对话框。在"添加控制器"对话框中点击"添加"。这是添加到项目中的内容:以下是添加到项目的内容:从数据库上下文派生的名为订单文本的类。这个类提供了概念验证模型和数据库之间的粘合剂。一个名称为的订单文本类,它派生于数据库上下文。这个类提供了少模型与数据库之间的粘合名为管理控制器的网络应用编程接口控制器。该控制器支持产品实例上的create, read, update, and delete操作。它使用订单文本类与实体框架进行通信。一个名称为管理控制器的网络应用编程接口控制器。这个控制器支持对产品实例的创建、读取、更新和删除操作。它使用订单文本类与实体框架进行通信配置文件中的新数据库连接字符串网站配置文件中的一个新的数据库连接字符串。上述新添加项见图2-19。WebAPI2-19

图2-19.新添加到项目的内容打开OrdersContext.cs文件。请注意,构造函数指定了数据库连接字符串的名称。该名称指的是添加到Web.config中的连接字符串打开OrdersContext.cs文件。注意,其构造器指明了数据库连接字符串的名称。该名称是指被添加到Web.config的连接字符串。复制代码代码如下:公共orders context(): base(' name=orders context ')向订单上下文类:添加以下属性将以下属性添加到订单文本类:复制代码代码如下:公共数据库订单{获取设置;} public DbSetOrderDetail订单详细信息{ get设置;}一个DbSet代表一组可以查询的实体。以下是订单文本类:数据库集的完整列表表示一组能够被查询的实体。以下是这个订单文本类的完整清单:复制代码代码如下:公共类Orders上下文: db context { public Orders context()} : base(' name=Orders context '){ }公共数据库订单{获取设置;} public DbSetOrderDetail订单详细信息{ get设置;}公共数据库产品{获取设置;} } AdminController类定义了五种实现基本create, read, update, and delete功能的方法。每个方法对应一个客户端可以调用的URI :类定义了实现基本的创建、读取、更新和删除功能的五个方法。每个方法对应于一个客户端可以请求的URI(见表2-2): 表2-2.管理控制器中实现创建、读取、更新和删除操作的五个方法表每个方法都调用订单文本来查询数据库。修改集合的方法(放、贴)和删除)调用数据库。保存更改以将更改保存到数据库中。控制器是根据超文本传送协议请求创建的,然后被释放,因此有必要在方法返回之前保持更改。每一个方法调用都会进入订单文本对数据库进行查询。对数据集进行修改的方法(放、贴)以及删除)会调用db .保存更改,以便把这些修改持久化回数据库。每个超文本传送协议请求都会创建控制器(实例),然后清除它。因此,在一个方法返回之前,对修改持久化是必要的添加数据库初始值设定项添加数据库初始化器实体框架有一个很好的特性,它允许您在启动时填充数据库,并在模型改变时自动重新创建数据库。这个特性在开发过程中很有用,因为你总是有一些测试数据,即使你改变了模型。实体框架有一个很好的特性,它让你在(应用程序)启动时填充数据库,并在模型发生修改时重建数据库。这个特性在开发期间是有用的,因为你总会有一些测试数据,甚至会修改模型在解决方案资源管理器中,右键单击"模型"文件夹,并创建一个名为OrdersContextInitializer的新类。粘贴以下实现:在"解决方案资源管理器"中,右击模型文件夹,并创建一个名称为OrdersContextInitializer的新类。

粘贴以下实现:复制代码代码如下:命名空间产品存储。模型{使用系统;使用系统。集合。通用;使用系统。数据。实体;公共类OrdersContextInitializer 3360 DropCreateDatabaseifModelChangersContext { 0受保护的覆盖无效种子(订单文本上下文){ var products=new list Product(){ new Product(){ Name='番茄汤,价格=1.39百万,实际成本=. 99百万},新产品(){名称=16.99百万,实际成本=10 },{新产品(){名称='余淼',价格=6.99百万,实际成本=2.05百万}产品ForEach(p=context).产品。添加(p));语境saveChanges();var Order=new Order(){ Customer=' Bob ' };var od=新列表订单明细(){新订单明细(){产品=产品[0],数量=2,订单=订单},新订单明细(){产品=产品[1],数量=4,订单=订单} }语境。订单。添加(订单);od .ForEach(o=上下文。订单详细信息。添加(o));语境saveChanges();} } }通过继承DropCreateDatabaseifModelChanges类,我们告诉实体框架,每当我们修改模型类时,都要删除数据库。当实体框架创建(或重新创建)数据库时,它调用种子方法来填充表。我们使用种子方法添加一些示例产品和一个示例订单。通过对DropCreateDatabaseifModelChanges类的继承,我们是在告诉实体框架,无论何时修改了模型类,便删除数据库。当实体框架创建(或重建)数据库时,它会调用种子方法去填充数据库。我们用这个种子方法添加了一些例子产品和一个例子订单这个特性非常适合测试,但是不要在生产中使用DropCreateDatabaseifMoldChanges类,因为如果有人更改模型类,您可能会丢失数据。这个特性对于测试是很棒的,但在产品(指正式运行的应用程序— 译者注)中不要使用这个DropCreateDatabaseifModelChanges类。因为,如果有人修改了模型类,便会丢失数据接下来,打开Global.asax,并将以下代码添加到应用程序_开始方法:中下一步,打开Global.asax,并将以下代码添加到应用程序_开始方法中:复制代码代码如下:系统。数据。实体。数据库。集合初始值设定项(新产品存储模型。OrdersContextInitializer());向控制器发送请求向控制器发送请求到目前为止,我们还没有编写任何客户端代码,但是您可以使用网络浏览器或超文本传送协议调试工具(如提琴手)调用网络应用编程接口。在可视化工作室中,按F5开始调试。您的网浏览器将打开到http://localhost:portnum/,其中portnum是某个端口号。此刻,我们还没有编写任何客户端代码,但你已经可以使用网浏览器或诸如游手好闲的人之类的调试工具来调用这个网络应用编程接口了。在可视化工作室中按F5键启动调试。你的浏览器将打开网址http://localhost:portnum/,这里,portnum是某个端口号向" http://localhost : portnum/API/admin "发送超文本传送协议请求。第一个请求完成的速度可能很慢,因为实体识别框架需要创建和播种数据库。响应应该类似于下面的内容发送一个超文本传送协议请求到http://localhost : portnum/API/admin。第一次请求可能会慢一些才能完成,因为实体框架需要创建和种植数据库。

其响应应当类似于下面这样:复制代码代码如下: HTTP/1.1 200 OK服务器: ASP。网开发服务器/10.0.0.0日期: 2012年6月18日星期一04:30336033 GMT X-AspNet-版本: 4。0 .30319缓存-控制:无缓存实用程序:无缓存Expires: -1内容-类型3:应用程序/charset=utf-8内容长度: 175连接:关闭[{'Id ' :1,' Name': '番茄汤、“价格”:1.39、“实际成本”:0.99}、{“Id”:2、“名称”:“锤子”、“价格”:16.99、“实际成本”:10.00}、{“Id”看完此文如果觉得有所收获,恳请给个推荐

版权声明:ASP .网络应用编程接口教程创建管理控制器实例分享是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。