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
賺錢方法
捕魚
主站蜘蛛池模板: 在线观看国产小视频| 中文字幕在线观| 夜夜拍夜夜爽| 日韩在线成年视频人网站观看| 国产欧美在线观看视频| 99re66精品视频在线观看| 亚洲天堂视频网站| 精品国产一二三区| 欲色天天综合网| 久久五月视频| 成人伊人色一区二区三区| 色婷婷狠狠干| 成人午夜天| 91麻豆精品国产高清在线| 国产精品对白刺激| 日韩毛片基地| 永久免费无码成人网站| 国产高潮视频在线观看| 欧美v在线| 中文字幕首页系列人妻| av一区二区三区在线观看 | 亚洲天堂视频网站| 日韩精品一区二区三区视频免费看| 丰满人妻中出白浆| 亚洲高清中文字幕| 久久福利片| 无码电影在线观看| 精品在线免费播放| 高清视频一区| 久久亚洲精少妇毛片午夜无码| 呦视频在线一区二区三区| 亚洲欧美自拍中文| 青青草国产一区二区三区| 午夜限制老子影院888| 欧美在线精品一区二区三区| 欧美日本在线观看| 欧美一区国产| 久久永久免费人妻精品| 精品一区二区三区中文字幕| 91蜜芽尤物福利在线观看| 精品色综合| 国产激情影院| 亚洲人成网站观看在线观看| 久久亚洲AⅤ无码精品午夜麻豆| 国产精品3p视频| 青草视频久久| a欧美在线| 欧美区国产区| 伊人色在线视频| 国产九九精品视频| 久久综合亚洲鲁鲁九月天| 日本爱爱精品一区二区| 亚洲国产一区在线观看| 久久国产精品国产自线拍| 色偷偷综合网| 国产欧美视频在线观看| 中国精品自拍| 亚洲中文字幕国产av| 久久6免费视频| 中文字幕人妻av一区二区| 热re99久久精品国99热| 久久综合激情网| 国产拍在线| 色综合久久88色综合天天提莫| 人人91人人澡人人妻人人爽| 久久国产精品77777| 国产成人高清精品免费5388| 欧美影院久久| 91亚洲国产视频| 永久成人无码激情视频免费| 久久综合丝袜长腿丝袜| 四虎精品黑人视频| 精品一区二区三区自慰喷水| 综合色88| 日韩精品无码免费一区二区三区 | AV网站中文| 国产精品一区在线观看你懂的| 成人av手机在线观看| 99re这里只有国产中文精品国产精品 | 91青青草视频在线观看的| 国产专区综合另类日韩一区| 中国一级特黄视频|