亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Code First模式的ASP.NET MVC應(yīng)用開發(fā)

        2012-11-25 02:37:16趙增敏唐惠康
        制造業(yè)自動(dòng)化 2012年6期
        關(guān)鍵詞:數(shù)據(jù)庫(kù)方法

        趙增敏,吳 潔,唐惠康

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

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

        0 引言

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

        1 創(chuàng)建項(xiàng)目

        在VS2010中新建一個(gè)項(xiàng)目,選擇Visual C#語言,選擇ASP.NET MVC 3 Web應(yīng)用程序模板,依次選擇Internet應(yīng)用程序和Razor視圖引擎。對(duì)類庫(kù)EntityFramework的引用將自動(dòng)添加到項(xiàng)目中。

        2 創(chuàng)建實(shí)體模型

        創(chuàng)建實(shí)體模型是Code First開發(fā)的關(guān)鍵所在。對(duì)于每個(gè)實(shí)體模型,均需創(chuàng)建一個(gè)類。這些類不需要派生自任何Entity Framework類或其他基類,也不必實(shí)現(xiàn)任何接口。在本文中定義了產(chǎn)品和產(chǎn)品類別兩個(gè)實(shí)體模型類:

        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 創(chuàng)建主鍵

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

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

        2.2 創(chuàng)建主外鍵關(guān)系

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

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

        public virtual Category Category {get; set;}

        同時(shí)在Category類中添加Products虛屬性:

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

        這樣,將會(huì)自動(dòng)創(chuàng)建主外鍵關(guān)系來管理這些關(guān)聯(lián),還會(huì)在后臺(tái)延遲加載數(shù)據(jù)。

        2.3 使用數(shù)據(jù)標(biāo)注

        在Code First開發(fā)模式下,數(shù)據(jù)驗(yàn)證可以利用System. ComponentModel.DataAnnotations命名空間中提供的一組特性類來實(shí)現(xiàn)。這些特性類也稱為數(shù)據(jù)標(biāo)注,可用于定義實(shí)體模型類中各個(gè)數(shù)據(jù)字段的行為。對(duì)于同一個(gè)屬性可同時(shí)應(yīng)用多個(gè)標(biāo)注。

        在下面的示例中,對(duì)ProductName字段應(yīng)用了Display和Required標(biāo)注,并指定了中文名稱和未輸入值時(shí)顯示的錯(cuò)誤信息。

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

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

        public string ProductName {get; set;}

        3 創(chuàng)建數(shù)據(jù)上下文

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

        在第四紀(jì)和新近紀(jì)土體中,天然孔隙比、壓縮系數(shù)、固結(jié)速率等物理力學(xué)指標(biāo)與地面沉降有著密切的聯(lián)系,一般隨深度增加,黏性土體壓縮性降低,而砂性土體的密

        在本文中,創(chuàng)建了一個(gè)名稱為StoreContext的數(shù)據(jù)上下文類,并定義了兩個(gè)實(shí)體集屬性,代碼如下:

        using System.Data.Entity;

        public class StoreContext : DbContext {

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

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

        4 配置數(shù)據(jù)庫(kù)連接

        傳統(tǒng)模式下,可通過ADO.NET Connection對(duì)象實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接。使用Code First開發(fā)模式時(shí),將會(huì)自動(dòng)在SQL Server Express實(shí)例中創(chuàng)建一個(gè)與DbContext名稱相同的數(shù)據(jù)庫(kù),并且自動(dòng)連接到該數(shù)據(jù)庫(kù)。也可以在項(xiàng)目的Web.config文件中添加連接字符串,以指定數(shù)據(jù)提供程序和現(xiàn)有數(shù)據(jù)庫(kù)的位置。

        5 實(shí)現(xiàn)CRUD操作

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

        5.1 添加控制器

        為了實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的各種基本操作,需要對(duì)每個(gè)實(shí)體創(chuàng)建一個(gè)控制器,每個(gè)控制器包含一組操作方法。

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

        5.2 控制器類

        在控制器類中,需要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)上下文對(duì)象,并通過各種操作方法來實(shí)現(xiàn)數(shù)據(jù)庫(kù)訪問。這些操作方法包括:用于呈現(xiàn)數(shù)據(jù)的Index方法;用于添加數(shù)據(jù)的Create方法;用于修改數(shù)據(jù)的Edit方法;用于刪除數(shù)據(jù)的Delete和DeleteConfirmed方法。在正確創(chuàng)建實(shí)體模型的前提下,VS2010將會(huì)自動(dòng)生成這些操作方法的代碼。

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

        對(duì)于有參操作方法,可向其傳遞實(shí)體ID或?qū)嶓w對(duì)象本身作為參數(shù)。實(shí)體ID可在單擊超鏈接或提交表單時(shí)傳遞到方法中。實(shí)體對(duì)象在提交表單時(shí)傳遞到方法中,其屬性值由相應(yīng)表單域確定。

        5.3 創(chuàng)建視圖

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

        5.3.1 使用@model指令引用強(qiáng)類型模型

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

        5.3.2 呈現(xiàn)HTML控件

        通過@model指令引用所需的強(qiáng)類型模型后,即可使用System.Web.Mvc.Html命名空間中的相關(guān)類來呈現(xiàn)各種HTML控件,并使用擴(kuò)展方法對(duì)這些控件進(jìn)行設(shè)置。

        6 結(jié)束語

        Code First 模式的關(guān)鍵是創(chuàng)建實(shí)體模型類并實(shí)現(xiàn)數(shù)據(jù)完整性和數(shù)據(jù)驗(yàn)證。有了合用的實(shí)體模型,即可借助于VS2010 快速生成控制器和視圖,從而實(shí)現(xiàn)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 發(fā)行說明.

        猜你喜歡
        數(shù)據(jù)庫(kù)方法
        學(xué)習(xí)方法
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        可能是方法不對(duì)
        數(shù)據(jù)庫(kù)
        用對(duì)方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        賺錢方法
        亚洲av中文无码乱人伦在线咪咕| 久久精品国产亚洲av桥本有菜| 丝袜美腿亚洲综合一区| 曰韩内射六十七十老熟女影视 | 国产免费一级高清淫日本片| 伊人影院在线观看不卡| 激情五月开心五月麻豆| 久久久久久国产精品免费免费| 国产精品一区二区暴白浆| 国产一级r片内射免费视频| 男女射精视频在线观看网站| 国产综合久久久久久鬼色| 最近中文av字幕在线中文| 中文字幕日本人妻一区| 色久悠悠婷婷综合在线| 边喂奶边中出的人妻| 欧美三级免费网站| 午夜亚洲精品视频网站| 无码国产精成人午夜视频一区二区| 亚洲av无码潮喷在线观看| 国产亚洲欧洲AⅤ综合一区| av天堂中文亚洲官网| 中文字幕人成乱码熟女| 亚洲色偷偷综合亚洲av伊人| 亚洲美女国产精品久久久久久久久| 亚洲av产在线精品亚洲第三站| 国产狂喷潮在线观看| 99视频这里有精品| 尤物成av人片在线观看| 内射白浆一区二区在线观看| 丰满少妇被猛男猛烈进入久久| 亚洲欧美日韩中文综合在线不卡| 东京热加勒比视频一区| 一区二区三区av波多野结衣| 色综合88| 日韩精品一区二区三区av| 欧美日韩精品乱国产| 人人妻人人添人人爽日韩欧美| 中文熟女av一区二区| 国产av激情舒服刺激| 好吊色欧美一区二区三区四区 |