校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > ASP.NET Web API教程 創(chuàng)建Admin控制器實例分享

ASP.NET Web API教程 創(chuàng)建Admin控制器實例分享

熱門標(biāo)簽:外呼系統(tǒng)用員工身份證 保山電話外呼管理系統(tǒng)怎么用 使用智能電話機器人違法嗎 朝陽市地圖標(biāo)注 太原外呼電銷機器人費用 蘇州銷售外呼系統(tǒng)預(yù)算 電話機器人廣告話術(shù) 淘寶地圖標(biāo)注如何做 東莞語音電銷機器人排名
In this section, we'll add a Web API controller that supports CRUD (create, read, update, and delete) operations on products. The controller will use Entity Framework to communicate with the database layer. Only administrators will be able to use this controller. Customers will access the products through another controller.
在本小節(jié)中,我們要添加一個對產(chǎn)品支持CRUD(創(chuàng)建、讀取、更新和刪除)操作的Web API控制器。該控制器將使用實體框架與數(shù)據(jù)庫層進(jìn)行通信。只有管理員才能夠使用這個控制器。客戶端將通過另一個控制器訪問產(chǎn)品。
In Solution Explorer, right-click the Controllers folder. Select Add and then Controller.
在“解決方案資源管理器”中右擊Controllers文件夾,選擇“添加”,然后選“控制器”(見圖2-16)。
 
圖2-16. 添加控制器
In the Add Controller dialog, name the controller AdminController. Under Template, select "API controller with read/write actions, using Entity Framework". Under Model class, select "Product (ProductStore.Models)". Under Data Context, select "New Data Context>".
在“添加控制器”對話框中,將此控制器命名為AdminController。在“模板”下選擇“帶有讀/寫動作的API控制器(用實體框架)”。在“模型類”下選擇“Product (ProductStore.Models)”。在“數(shù)據(jù)上下文”下選擇“新數(shù)據(jù)上下文>”(見圖2-17)。
 
圖2-17. 添加控制器對話框中的設(shè)置
If the Model class drop-down does not show any model classes, make sure you compiled the project. Entity Framework uses reflection, so it needs the compiled assembly.
如果“模型類”下拉列表未顯示任何模型類,請確保已編譯了此項目。實體框架使用反射,因此它需要已編譯的程序集。
Selecting "New Data Context>" will open the New Data Context dialog. Name the data context ProductStore.Models.OrdersContext.
選擇“新數(shù)據(jù)上下文>”會打開“新數(shù)據(jù)上下文”對話框。將該數(shù)據(jù)上下文命名為ProductStore.Models.OrdersContext(見圖2-18)。
 
圖2-18. 命名“新數(shù)據(jù)上下文”
Click OK to dismiss the New Data Context dialog. In the Add Controller dialog, click Add.
點擊“OK”退出這個“新數(shù)據(jù)上下文”對話框。在“添加控制器”對話框中點擊“添加”。
Here's what got added to the project:
以下是添加到項目的內(nèi)容:
A class named OrdersContext that derives from DbContext. This class provides the glue between the POCO models and the database.
一個名稱為的OrdersContext類,它派生于DbContext。這個類提供了POCO模型與數(shù)據(jù)庫之間的粘合。
A Web API controller named AdminController. This controller supports CRUD operations on Product instances. It uses the OrdersContext class to communicate with Entity Framework.
一個名稱為AdminController的Web API控制器。這個控制器支持對Product實例的CRUD操作。它使用OrdersContext類與實體框架進(jìn)行通信。
A new database connection string in the Web.config file.
Web.config文件中的一個新的數(shù)據(jù)庫連接字符串。
上述新添加項見圖2-19。
 
圖2-19. 新添加到項目的內(nèi)容
Open the OrdersContext.cs file. Notice that the constructor specifies the name of the database connection string. This name refers to the connection string that was added to Web.config.
打開OrdersContext.cs文件。注意,其構(gòu)造器指明了數(shù)據(jù)庫連接字符串的名稱。該名稱是指被添加到Web.config的連接字符串。
復(fù)制代碼 代碼如下:

public OrdersContext() : base("name=OrdersContext")Add the following properties to the OrdersContext class:

將以下屬性添加到OrdersContext類:
復(fù)制代碼 代碼如下:

public DbSetOrder> Orders { get; set; }
public DbSetOrderDetail> OrderDetails { get; set; }

A DbSet represents a set of entities that can be queried. Here is the complete listing for the OrdersContext class:
DbSet表示一組能夠被查詢的實體。以下是這個OrdersContext類的完整清單:
復(fù)制代碼 代碼如下:

public class OrdersContext : DbContext
{
public OrdersContext() : base("name=OrdersContext")
{
}
public DbSetOrder> Orders { get; set; }
public DbSetOrderDetail> OrderDetails { get; set; }
public DbSetProduct> Products { get; set; }
}

The AdminController class defines five methods that implement basic CRUD functionality. Each method corresponds to a URI that the client can invoke:
類定義了實現(xiàn)基本的CRUD功能的五個方法。每個方法對應(yīng)于一個客戶端可以請求的URI(見表2-2):
表2-2. AdminController中實現(xiàn)CRUD操作的五個方法
table
Each method calls into OrdersContext to query the database. The methods that modify the collection (PUT, POST, and DELETE) call db.SaveChanges to persist the changes to the database. Controllers are created per HTTP request and then disposed, so it is necessary to persist changes before a method returns.
每一個方法調(diào)用都會進(jìn)入OrdersContext對數(shù)據(jù)庫進(jìn)行查詢。對數(shù)據(jù)集進(jìn)行修改的方法(PUT、POST以及DELETE)會調(diào)用db.SaveChanges,以便把這些修改持久化回數(shù)據(jù)庫。每個HTTP請求都會創(chuàng)建控制器(實例),然后清除它。因此,在一個方法返回之前,對修改持久化是必要的。
Add a Database Initializer
添加數(shù)據(jù)庫初始化器
Entity Framework has a nice feature that lets you populate the database on startup, and automatically recreate the database whenever the models change. This feature is useful during development, because you always have some test data, even if you change the models.
實體框架有一個很好的特性,它讓你在(應(yīng)用程序)啟動時填充數(shù)據(jù)庫,并在模型發(fā)生修改時重建數(shù)據(jù)庫。這個特性在開發(fā)期間是有用的,因為你總會有一些測試數(shù)據(jù),甚至?xí)薷哪P汀?
In Solution Explorer, right-click the Models folder and create a new class named OrdersContextInitializer. Paste in the following implementation:
在“解決方案資源管理器”中,右擊Models文件夾,并創(chuàng)建一個名稱為OrdersContextInitializer的新類。粘貼以下實現(xiàn):
復(fù)制代碼 代碼如下:

namespace ProductStore.Models
{
using System;
using System.Collections.Generic;
using System.Data.Entity;
public class OrdersContextInitializer : DropCreateDatabaseIfModelChangesOrdersContext>
{
protected override void Seed(OrdersContext context)
{
var products = new ListProduct>()
{
new Product() { Name = "Tomato Soup", Price = 1.39M, ActualCost = .99M },
new Product() { Name = "Hammer", Price = 16.99M, ActualCost = 10 },
new Product() { Name = "Yo yo", Price = 6.99M, ActualCost = 2.05M }
};
products.ForEach(p => context.Products.Add(p));
context.SaveChanges();
var order = new Order() { Customer = "Bob" };
var od = new ListOrderDetail>()
{
new OrderDetail() { Product = products[0], Quantity = 2, Order = order},
new OrderDetail() { Product = products[1], Quantity = 4, Order = order }
};
context.Orders.Add(order);
od.ForEach(o => context.OrderDetails.Add(o));
context.SaveChanges();
}
}
}

By inheriting from the DropCreateDatabaseIfModelChanges class, we are telling Entity Framework to drop the database whenever we modify the model classes. When Entity Framework creates (or recreates) the database, it calls the Seed method to populate the tables. We use the Seed method to add some example products plus an example order.
通過對DropCreateDatabaseIfModelChanges類的繼承,我們是在告訴實體框架,無論何時修改了模型類,便刪除數(shù)據(jù)庫。當(dāng)實體框架創(chuàng)建(或重建)數(shù)據(jù)庫時,它會調(diào)用Seed方法去填充數(shù)據(jù)庫。我們用這個Seed方法添加了一些例子產(chǎn)品和一個例子訂單。
This feature is great for testing, but don't use the DropCreateDatabaseIfModelChanges class in production, because you could lose your data if someone changes a model class.
這個特性對于測試是很棒的,但在產(chǎn)品(指正式運行的應(yīng)用程序 — 譯者注)中不要使用這個DropCreateDatabaseIfModelChanges類。因為,如果有人修改了模型類,便會丟失數(shù)據(jù)。
Next, open Global.asax and add the following code to the Application_Start method:
下一步,打開Global.asax,并將以下代碼添加到Application_Start方法中:
復(fù)制代碼 代碼如下:

System.Data.Entity.Database.SetInitializer(
new ProductStore.Models.OrdersContextInitializer());Send a Request to the Controller

向控制器發(fā)送請求
At this point, we haven't written any client code, but you can invoke the web API using a web browser or an HTTP debugging tool such as Fiddler. In Visual Studio, press F5 to start debugging. Your web browser will open to http://localhost:portnum/, where portnum is some port number.
此刻,我們還沒有編寫任何客戶端代碼,但你已經(jīng)可以使用Web瀏覽器或諸如Fiddler之類的調(diào)試工具來調(diào)用這個Web API了。在Visual Studio中按F5鍵啟動調(diào)試。你的瀏覽器將打開網(wǎng)址http://localhost:portnum/,這里,portnum是某個端口號。
Send an HTTP request to "http://localhost:portnum/api/admin". The first request may be slow to complete, because Entify Entity Framework needs to create and seed the database. The response should something similar to the following:
發(fā)送一個HTTP請求到“http://localhost:portnum/api/admin”。第一次請求可能會慢一些才能完成,因為實體框架需要創(chuàng)建和種植數(shù)據(jù)庫。其響應(yīng)應(yīng)當(dāng)類似于下面這樣:
復(fù)制代碼 代碼如下:

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Mon, 18 Jun 2012 04:30:33 GMT
X-AspNet-Version: 4.0.30319
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Content-Type: application/json; charset=utf-8
Content-Length: 175
Connection: Close
[{"Id":1,"Name":"Tomato Soup","Price":1.39,"ActualCost":0.99},{"Id":2,"Name":"Hammer",
"Price":16.99,"ActualCost":10.00},{"Id":3,"Name":"Yo yo","Price":6.99,"ActualCost":
2.05}]

看完此文如果覺得有所收獲,懇請給個推薦
您可能感興趣的文章:
  • 創(chuàng)建一個完整的ASP.NET Web API項目
  • ASP.NET中Web API的簡單實例
  • ASP.NET MVC Web API HttpClient簡介
  • ASP.NET Web Api 2實現(xiàn)多文件打包并下載文件的實例
  • 支持Ajax跨域訪問ASP.NET Web Api 2(Cors)的示例教程
  • ASP.NET Web API教程 創(chuàng)建Admin視圖詳細(xì)介紹
  • ASP.NET Web API如何將注釋自動生成幫助文檔
  • ASP.NET Web API教程 創(chuàng)建域模型的方法詳細(xì)介紹
  • .Net Web Api中利用FluentValidate進(jìn)行參數(shù)驗證的方法

標(biāo)簽:阿里 潛江 克拉瑪依 運城 西藏 綏化 呼倫貝爾 洛陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP.NET Web API教程 創(chuàng)建Admin控制器實例分享》,本文關(guān)鍵詞  ASP.NET,Web,API,教程,創(chuàng)建,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ASP.NET Web API教程 創(chuàng)建Admin控制器實例分享》相關(guān)的同類信息!
  • 本頁收集關(guān)于ASP.NET Web API教程 創(chuàng)建Admin控制器實例分享的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲天堂a在线| 久久婷婷综合激情| 亚洲激情av在线| 在线一区二区三区| 亚洲一级二级在线| 欧美肥大bbwbbw高潮| 免费av成人在线| 日韩精品一区二区三区视频播放| 国产一区欧美一区| 国产精品美女久久久久久2018| av在线播放一区二区三区| 亚洲私人影院在线观看| 欧美精品在线一区二区| 久久精品国产在热久久| 久久久99久久| 色先锋资源久久综合| 午夜精品国产更新| 精品久久久久久无| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 天涯成人国产亚洲精品一区av| 91精品国产色综合久久不卡蜜臀| 韩国欧美一区二区| 亚洲天堂成人网| 欧美一区2区视频在线观看| 久久9热精品视频| 国产精品高潮久久久久无| 欧美精品777| 国产激情精品久久久第一区二区| 又紧又大又爽精品一区二区| 日韩午夜在线观看视频| av电影在线不卡| 日本不卡一区二区| 国产精品午夜久久| 日韩欧美一二区| 在线视频中文字幕一区二区| 免费高清成人在线| 亚洲视频1区2区| 日韩三级在线观看| 欧洲人成人精品| 国产成人在线视频免费播放| 亚洲一区二区中文在线| 国产日韩视频一区二区三区| 欧美日韩精品一区视频| va亚洲va日韩不卡在线观看| 日本欧美一区二区三区乱码 | 成人av在线影院| 免费在线观看视频一区| 亚洲欧美色图小说| 久久婷婷久久一区二区三区| 欧美日韩国产123区| 99久久久无码国产精品| 国产一区二区导航在线播放| 丝袜美腿亚洲一区| 伊人色综合久久天天| 欧美韩日一区二区三区| 91精品国产乱码| 欧美丝袜丝交足nylons| 色综合婷婷久久| 成人免费毛片片v| 极品少妇一区二区| 亚洲国产精品嫩草影院| 亚洲精品成人少妇| 日本一二三四高清不卡| 精品对白一区国产伦| 91精品国产麻豆| 欧美精品在线一区二区三区| 欧美综合一区二区| 日本道精品一区二区三区| 成人免费av资源| 国产成+人+日韩+欧美+亚洲| 国产一区二区在线视频| 久久精品国产精品亚洲红杏| 秋霞成人午夜伦在线观看| 日韩在线一二三区| 午夜精品福利一区二区蜜股av| 亚洲综合自拍偷拍| 亚洲精品少妇30p| 亚洲男人的天堂在线观看| 亚洲欧洲国产日韩| 国产精品国产精品国产专区不片| 久久色.com| 久久精品一区二区| 国产精品日产欧美久久久久| 国产精品丝袜一区| 成人免费在线观看入口| 亚洲精品国久久99热| 一区二区三区免费网站| 亚洲成av人综合在线观看| 午夜精品久久久久久久99水蜜桃| 亚洲激情综合网| 日韩女同互慰一区二区| 日本一区二区三区在线不卡| 国产精品毛片a∨一区二区三区| 欧美性xxxxx极品少妇| 色播五月激情综合网| 日韩一区国产二区欧美三区| 国产河南妇女毛片精品久久久 | 精品国产91乱码一区二区三区| 欧美一级片在线| 精品免费国产二区三区| 久久婷婷色综合| 亚洲男人的天堂在线观看| 水蜜桃久久夜色精品一区的特点| 日韩电影在线免费看| 韩国女主播一区| 97精品久久久久中文字幕| 欧美日韩中文字幕精品| 久久综合久久综合亚洲| 国产精品嫩草久久久久| 亚洲五月六月丁香激情| 久久精品二区亚洲w码| 日本道免费精品一区二区三区| 6080亚洲精品一区二区| 国产亚洲欧美色| 亚洲一区成人在线| 国产中文字幕一区| 色伊人久久综合中文字幕| 日韩一区二区中文字幕| 成人免费视频在线观看| 麻豆91在线播放免费| 国产在线一区二区| 另类小说综合欧美亚洲| 偷窥少妇高潮呻吟av久久免费| 激情综合色播激情啊| 91色.com| 精品国产一区二区三区久久影院 | 国产精品一区专区| 在线免费亚洲电影| 国产视频一区二区在线| 午夜久久久久久久久久一区二区| 国产一区视频网站| 6080日韩午夜伦伦午夜伦| 成人欧美一区二区三区1314| 久久精品国产99国产精品| 91黄色免费网站| 中文无字幕一区二区三区| 青青草原综合久久大伊人精品| 99久久精品99国产精品| 精品国产乱码久久久久久老虎| 一区二区三区日韩精品视频| 国产91精品一区二区麻豆亚洲| 欧美日韩精品免费观看视频| 国产精品入口麻豆原神| 经典三级在线一区| 69av一区二区三区| 午夜精品一区二区三区三上悠亚 | 色综合久久中文综合久久97| 精品美女被调教视频大全网站| 亚洲国产精品精华液网站| 成人免费高清在线观看| 久久精品人人爽人人爽| 麻豆国产91在线播放| 在线电影欧美成精品| 一区二区三区四区在线播放| av动漫一区二区| 国产精品蜜臀在线观看| 国产99久久久国产精品潘金网站| 日韩视频中午一区| 捆绑调教一区二区三区| 欧美一级午夜免费电影| 亚洲.国产.中文慕字在线| 日本道免费精品一区二区三区| 亚洲色图在线看| gogo大胆日本视频一区| 国产精品免费久久| 99视频超级精品| 亚洲欧美日韩精品久久久久| 99久久99久久精品国产片果冻| 中文字幕欧美日韩一区| 成人sese在线| 亚洲天堂a在线| 色八戒一区二区三区| 亚洲国产日韩综合久久精品| 欧美午夜在线一二页| 丝袜亚洲另类欧美综合| 日韩欧美在线一区二区三区| 日本中文字幕一区二区视频| 日韩三级视频中文字幕| 国产在线视视频有精品| 国产欧美日韩不卡免费| 成人h精品动漫一区二区三区| 成人欧美一区二区三区小说| 色94色欧美sute亚洲线路一久| 亚洲成人手机在线| 日韩精品最新网址| 国产成人免费在线视频| 国产精品女同互慰在线看| 色综合中文字幕国产| 综合网在线视频| 欧美在线一区二区三区| 婷婷成人综合网| 久久久久久久久久久久电影| 成人综合婷婷国产精品久久蜜臀| 国产精品久久久久久久久搜平片| 99久久精品免费看国产免费软件| 偷拍亚洲欧洲综合| 精品久久人人做人人爱| 高清成人免费视频| 亚洲一区在线观看免费 | 亚洲青青青在线视频|