999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Code First模式的ASP.NET MVC應用開發

2012-11-25 02:37:16趙增敏唐惠康
制造業自動化 2012年6期
關鍵詞:數據庫方法

趙增敏,吳 潔,唐惠康

ZHAO Zeng-min, WU Jie, TANG Hui-kang

(河南信息工程學校,鄭州 450008)

0 引言

開發ASP.NET MVC應用程序時,通常是首先創建數據庫,然后通過編寫代碼來實現數據庫訪問。這種開發模式已得到了廣泛應用,但也存在著性能差、效率低等缺點。隨著ASP.NET Entity Framework 4.1的發布,推出了一種稱為Code First的新開發模式,可從代碼開始數據庫應用開發。本文從模型、控制器和視圖3個方面對這種開發模式進行了詳細研究。

1 創建項目

在VS2010中新建一個項目,選擇Visual C#語言,選擇ASP.NET MVC 3 Web應用程序模板,依次選擇Internet應用程序和Razor視圖引擎。對類庫EntityFramework的引用將自動添加到項目中。

2 創建實體模型

創建實體模型是Code First開發的關鍵所在。對于每個實體模型,均需創建一個類。這些類不需要派生自任何Entity Framework類或其他基類,也不必實現任何接口。在本文中定義了產品和產品類別兩個實體模型類:

public class Product {

public int ProductID {get; set;}

public int CategoryID {get; set;}

public string ProductName {get; set;}

public decimal UnitPrice {get; set;}

public int UnitsInStock { get; set; }}

public class Category {

public int CategoryID {get; set;}

public string CategoryName {get; set;}}

2.1 創建主鍵

為了保證表完整性,每個表中都必須有一個主鍵,這就需要在某個列或多個列的組合上定義一個PRIMARY KEY約束。

在Code First模式下,可通過屬性名稱來“推測”主鍵:聲明實體模型類時若將某屬性命名為ID或<類名>ID,則該屬性將被推斷為主鍵。主鍵檢測與大小寫無關。若主鍵為int、long或short類型,還會注冊為標識列。例如,Product類的ProductID屬性和Category類的CategoryID就屬于這種情況,它們既是主鍵又是標識列。

2.2 創建主外鍵關系

為了保證表與表之間的數據完整性,要求主表中主鍵與從表中外鍵是一致的,這需要在從表上創建FOREIGN KEY約束。

在Code First模式下,可通過在相關聯的類中添加虛屬性來實現主外鍵關系。例如,本文中的Product類和Category類分別表示產品和產品類別,兩者之間顯然存在著關聯。為了實現這種關聯,可在Product類中添加Category虛屬性:

public virtual Category Category {get; set;}

同時在Category類中添加Products虛屬性:

public virtual ICollection<Product> Products{get; set;}

這樣,將會自動創建主外鍵關系來管理這些關聯,還會在后臺延遲加載數據。

2.3 使用數據標注

在Code First開發模式下,數據驗證可以利用System. ComponentModel.DataAnnotations命名空間中提供的一組特性類來實現。這些特性類也稱為數據標注,可用于定義實體模型類中各個數據字段的行為。對于同一個屬性可同時應用多個標注。

在下面的示例中,對ProductName字段應用了Display和Required標注,并指定了中文名稱和未輸入值時顯示的錯誤信息。

[Display(Name="產品名稱")]

[Required(ErrorMessage="產品名稱不能為空")]

public string ProductName {get; set;}

3 創建數據上下文

為了將實體模型類映射到數據庫中,必須創建數據上下文類。該類必須滿足下列要求:派生自System.Data. Entity.DbContext;對于每個實體集定義一個可讀寫屬性;每個屬性均為System.Data.Entity.DbSet<T>類型,其中T為實體的類型。

在第四紀和新近紀土體中,天然孔隙比、壓縮系數、固結速率等物理力學指標與地面沉降有著密切的聯系,一般隨深度增加,黏性土體壓縮性降低,而砂性土體的密

在本文中,創建了一個名稱為StoreContext的數據上下文類,并定義了兩個實體集屬性,代碼如下:

using System.Data.Entity;

public class StoreContext : DbContext {

public DbSet<Product> Products {get; set;}

public DbSet<Category> Categories {get; set;}}

4 配置數據庫連接

傳統模式下,可通過ADO.NET Connection對象實現數據庫連接。使用Code First開發模式時,將會自動在SQL Server Express實例中創建一個與DbContext名稱相同的數據庫,并且自動連接到該數據庫。也可以在項目的Web.config文件中添加連接字符串,以指定數據提供程序和現有數據庫的位置。

5 實現CRUD操作

CRUD是指在進行數據處理時的增加(Create)、查詢(Retrieve)、更新(Update)和刪除(Delete)操作,這些操作需要對每個實體創建控制器和相應視圖來實現。安裝ASP.NET MVC 3工具更新后,VS2010中的“添加控制器”對話框得到增強,提供了更多基架選項,可快速生成控制器和視圖。

5.1 添加控制器

為了實現對數據庫的各種基本操作,需要對每個實體創建一個控制器,每個控制器包含一組操作方法。

若要添加控制器,可右擊“解決方案資源管理器”中的Models文件夾,然后選擇“添加”→“控制器”,當彈出“添加控制器”對話框時,指定控制器名稱,設置基架選項,選擇“包含讀/寫操作和視圖的控制器(使用Entity Framework)”,選擇模型類、數據上下文類及Razor視圖。

5.2 控制器類

在控制器類中,需要創建一個數據上下文對象,并通過各種操作方法來實現數據庫訪問。這些操作方法包括:用于呈現數據的Index方法;用于添加數據的Create方法;用于修改數據的Edit方法;用于刪除數據的Delete和DeleteConfirmed方法。在正確創建實體模型的前提下,VS2010將會自動生成這些操作方法的代碼。

操作方法分為兩類:一類僅用于處理HTTP GET請求,另一類僅用于處理HTTP POST請求。默認情況下操作方法可用于HTTP GET請求。若某操作方法是在提交表單時調用的,則需要對該方法應用HttpPost特性。對于DeleteConfirmed方法,除了應用HttpPost特性之外,還要應用ActionName("Delete")特性以指定操作名稱。

對于有參操作方法,可向其傳遞實體ID或實體對象本身作為參數。實體ID可在單擊超鏈接或提交表單時傳遞到方法中。實體對象在提交表單時傳遞到方法中,其屬性值由相應表單域確定。

5.3 創建視圖

除DeleteConfirmed方法外,產品控制器類中的所有其他操作方法都要求創建相應視圖。若在添加控制器時選擇“包含讀/寫操作和視圖的控制器(使用Entity Framework)”模板和Razor視圖,則會自動生成視圖。

5.3.1 使用@model指令引用強類型模型

@model指令是ASP.NET MVC 3提供的一項新功能,它實現了視圖對強類型模型的引用,以便在視圖模板中直接訪問從控制器類中傳遞過來的模型。

5.3.2 呈現HTML控件

通過@model指令引用所需的強類型模型后,即可使用System.Web.Mvc.Html命名空間中的相關類來呈現各種HTML控件,并使用擴展方法對這些控件進行設置。

6 結束語

Code First 模式的關鍵是創建實體模型類并實現數據完整性和數據驗證。有了合用的實體模型,即可借助于VS2010 快速生成控制器和視圖,從而實現CRUD 功能。

[1] Vincent-Philippe Lauzon. Entity Framework 4.1: Basics(1). http://vincentlauzon.wordpress.com/2011/04/03/entity-framework-4-1-basics-1/.

[2] Microsoft. ASP.NET MVC 3 Tools Update 發行說明.

猜你喜歡
數據庫方法
學習方法
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 中文字幕久久亚洲一区| 在线观看国产黄色| 99国产精品免费观看视频| 国产超薄肉色丝袜网站| 精品成人免费自拍视频| 国产精品成人不卡在线观看 | 久久国产热| 九九久久精品免费观看| 日韩一区二区在线电影| 亚洲国语自产一区第二页| 国产精品一线天| 国产亚洲欧美日韩在线观看一区二区| 国产自在线拍| 波多野结衣一区二区三区88| 无码免费的亚洲视频| 欧美成人精品在线| 999精品视频在线| 亚洲日本一本dvd高清| 综合色天天| 91外围女在线观看| 精品在线免费播放| 日本91视频| 久热这里只有精品6| 中文字幕无码av专区久久| 幺女国产一级毛片| 婷婷色中文| 欧洲av毛片| 中文字幕无码电影| 国产美女在线免费观看| 视频国产精品丝袜第一页| 99国产精品免费观看视频| 国产成人夜色91| 亚洲中久无码永久在线观看软件 | 亚洲av日韩av制服丝袜| 在线综合亚洲欧美网站| 成人精品在线观看| 青青国产成人免费精品视频| 中文无码精品A∨在线观看不卡| 美女毛片在线| 国产第一色| 午夜无码一区二区三区在线app| 欧美a级在线| a欧美在线| 手机成人午夜在线视频| 一本大道AV人久久综合| 国产精品9| 婷婷色婷婷| 亚洲AⅤ无码日韩AV无码网站| 亚洲成人精品在线| 国产粉嫩粉嫩的18在线播放91| 欧美区一区| 亚洲精品中文字幕午夜| 一区二区午夜| 尤物亚洲最大AV无码网站| 中文字幕2区| 成年女人a毛片免费视频| 精品国产一二三区| 亚洲成人在线免费观看| 免费人成网站在线高清| 精品五夜婷香蕉国产线看观看| 国产在线八区| 欧美午夜理伦三级在线观看| 亚洲无码电影| 国产特级毛片aaaaaaa高清| 亚洲愉拍一区二区精品| 色综合激情网| 国产美女精品在线| 青青草国产一区二区三区| 福利一区在线| 精品国产女同疯狂摩擦2| 全午夜免费一级毛片| 亚洲国产天堂久久综合| 四虎免费视频网站| 伊人久久影视| 91网红精品在线观看| 久久情精品国产品免费| 97超爽成人免费视频在线播放 | 久久永久视频| 色噜噜综合网| 五月天久久综合| 五月激情综合网| 欧美日韩专区|