童 鈺
(湖北師范學院 計算機科學與技術學院,湖北 黃石 435002)
ASP.NET MVC框架中的數據庫技術分析
童鈺
(湖北師范學院 計算機科學與技術學院,湖北 黃石435002)
摘要:微軟推出的Visual Studio開發平臺以其完善的開發機制、龐大的類庫以及在數據庫交互方面強大的功能吸引著眾多的開發人員的使用。而在VS2010之后的平臺版本中由于整合了ASP.NET MVC項目模版,這使得開發人員可以通過該模板的自動創建功能很方便的完成一個開發項目的大部分工作。這樣的做法無疑能夠讓開發人員可以快速地完成一個開發項目,但是卻并不能深入了解項目的構造和運行機制,所以只有進一步分析MVC核心的技術才能使我們更好地提高項目的質量和可維護性。
關鍵詞:MVC; ORM; 數據庫
中圖分類號:TP311.5
文獻標識碼:A
文章編號:1009-2714(2015)04- 0025- 04
doi:10.3969/j.issn.1009-2714.2015.04.006
收稿日期:2015—08—12
作者簡介:童鈺(1977—),男,湖北黃石人,講師,碩士.
1MVC概述以及ASP.NET MVC
MVC最早是在1979年由現挪威奧斯陸大學教授Trygve Reenskaug 提出的,并應用于當時廣泛使用的程序設計語言Smalltalk中,其主要目的就在于簡化軟件開發的復雜度,以一種概念簡單卻又權責分明的架構來撰寫更模塊化,可維護性更高的程序代碼。因此,MVC并不是一種程序語言,而是開發時所使用的一種“框架”(架構)。MVC框架中使軟件開發分為三個主要單元:Model(模型)、View(視圖)、Controller(控制器),其定義和之間的關系如圖1:

圖1 MVC定義及關系圖
在MVC中有一個非常重要的概念“關注分離點”(Separation Of Concerns),就是指你在項目開發時可以只關注當前的對象,不用擔心受到同項目中其它對象的干擾。微軟長久以來致力于發展開發工具,希望能降低開發上的負擔,因此基于MVC這種優秀的軟件開發架構微軟推出了ASP.NET MVC,并且從第一版以來ASP.NET MVC就以微軟公眾授權開放源代碼,同時ASP.NET MVC最大的優勢就是可以通過Visual Studio這個龐大的開發平臺來進行項目開發,而且ASP.NET MVC擁有非常清楚的關注分離點架構。所以,ASP.NET MVC既擁有MVC優秀的架構又可以使用Visual Studio來建立、調試、維護開發項目,這使得對Visual Studio比較熟悉的人可以更容易分析和掌握ASP.NET MVC的核心技術。

2ASP.NET MVC中的數據處理
一個開發應用程序的項目中,數據的處理是最基礎也是最核心的內容,ASP.NET MVC也不例外。
首先我們要明確的一點是在ASP.NET MVC中,Model負責所有與數據有關的工作,例如:新增、刪除、更改、查詢等,同時Model的獨立性非常高,所以它可以更好的專注于如何有效地提供數據訪問機制、數據格式驗證、商業邏輯驗證等工作。
其次,當我們創建好數據模型,初次運行應用程序項目后ASP.NET MVC將會自動在對應的APP_Data目錄下產生一組默認的數據庫文檔(*.mdf或*.ldf),文檔的命名規則為aspnet-項目名稱-日期時間.mdf,而整個項目的數據處理就是對這些數據文檔的處理。

圖2 Model文件夾以及APP_Data文件夾
3如何在ASP.NET MVC下開發數據層
微軟的開發工具一向功能強大,這可以極大地降低項目開發上的負擔,但在開發過程中卻造成了開發人員過度依賴開發工具,反而降低了對數據庫原理、網絡原理、面向對象程序設計等基礎知識的學習欲望。所以,充分掌握ASP.NET MVC下的數據庫構成方式和技術特點并且能夠適當調整ASP.NET MVC自動生成的項目框架才能最終得到符合開發者需求的軟件。
由于ASP.NET MVC還是基于面向對象的程序設計,因此在Model層上最好采用ORM(Object Relational Mapping)信息訪問技術來開發。ORM可以將結構化的關系型數據庫映射成面向對象模型,在ASP.NET MVC中的具體體現也就是Entity Framework。在選擇采用了Entity Framework還是其它ORM開發技術后,根據項目的不同情況我們可以使用以下三種不同的數據庫開發模式來進行數據庫的開發:
1)數據庫優先開發模式
數據庫優先開發就是先進行數據庫設計,以數據庫里定義的數據結構為主體和依據來進行應用程序的開發.
2)模型優先開發模式
模型優先開發模式是指在ORM架構中先創建對象模型,應用程序的開發則依據這些對象模型,當要訪問數據庫時(在ASP.NET MVC中)通過Entity Framework數據提供者的協助就可以自動生成對應的SQL語句并創建完整的數據庫。
3)程序代碼優先開發模式(Code first)
這是一種比較新穎的開發模式,它是讓開發人員直接根據項目需求先寫出相關的類和屬性代碼也就是應用程序所需要用到的數據模型,然后通過ORM框架的管理再轉換為實體模型。這種方法可以避免因為開發人員對數據庫操作不熟悉而導致開發效率降低。
在當前較新版本的Visual Studio開發環境中ASP.NET MVC和Entity Framework都已經升級到第五版本,它們尤其強化了程序代碼優先的開發模式。

圖3 創建數據模型的代碼
如圖3所示,這是一段創建留言板用戶信息數據模型的代碼,當代碼正確運行后這段程序將會在數據庫中創建一個名為UserInfo的表格,這就和在數據庫開發平臺下創建數據表是一樣的。當所有項目當中的要用到的數據模型都創建完畢,實際也就意味著我們已經完成了項目數據庫的建立。
4ASP.NET MVC下的Code first數據庫開發后的數據遷移問題
在使用Code first生成數據庫后當數據庫發生更改時,運行程序就會出現數據已更改的問題,這時可以刪除數據庫重新生成解決但是之前的數據就無法保留,為了保留之前的數據庫數據,我們需要使用到Code first數據遷移。
首先,如果需要更改數據結構,必須是先更改Model類,然后使用Code firs數據遷移,如果直接先更改了數據庫則使用數據遷移會報錯。
其次,如果在項目中我們只是引用的EF5.0(Entity Framework5)就不能達到直接安裝EF5的效果同樣無法完成數據遷移,這時我們就需要先安裝EF5.0執行此命令“Install-Package EntityFramework-Version 5.0.0”安裝EF5.0,安裝后Model類下會出現packages.config(如圖4)。現在我們就可以正常地開始操作數據遷移了。首先執行命令:Enable-MigrationsContextTypeName MovieDBContext 開啟Code First遷移。

圖4 安裝EF5.0生成packages.config文件
5結語
雖然通過使用ASP.NET MVC可以自動完成項目的大部分工作,極大地降低開發人員的工作負擔,但對于整個ASP.NET MVC中最關鍵的一個部分Model來說,如果我們沒有清晰的認識它是如何在ASP.NET MVC中運作的,不能很好地對它進行規劃,我們也就沒有辦法做出一個好的ASP.NET MVC項目。
參考文獻:
[1]李園,陳世平.MVC設計模式在ASP.NET平臺中的應用[J].計算機工程與設計,2009,13:3180~3184.
[2]蔣金楠.ASP.NET MVC4框架揭秘[M].北京: 電子工業出版社,2013.
[3]甄鐳.NET與設計模式[M].北京:電子工業出版被,2005.
[4]黎永良,禚杜武.MVC設計模式的改進與應用[J].計算機工程,2005,31(9):96~98.
[5]趙增敏,吳潔,唐惠康.基于Code First模式的ASP.NET MVC應用開發[J].制造業自動化,2012, 34(6):154 ~156.
[6]孫高毅. 基于.NET的ASP.NET MVC框架研究[D].長沙:中南大學,2009.
[7]吳亞軍.試析ASP.NET的MVC開發模式 [J].電腦編程技巧與維護,2011(14):77~78.
[8]陳曉丹,鄭 毅.ASP.NET開發環境下的WebForm與MVC設計模式[J].武漢工程職業技術學院學報,2009,(06).doi:10.3969/j.issn.1671-3524.2009.02.011.
Analysis of database technology in MVC ASP.NET framework
TONG Yu
(The College of Computer Science and Technology, Hubei Normal University, Huangshi435000)
Abstract:Microsoft launched the Studio Visual development platform to its sound development mechanism, a large class library and in the database to interact with powerful features to attract a large number of developers use. And in the platform version of VS2010 after the integration of the MVC ASP.NET project template, which allows developers to automatically create a function through the template to complete a large part of the development project. Such an approach will undoubtedly allow developers to quickly complete a development project, but it can not be in-depth understanding of the project's structure and operation mechanism, so only the further analysis of MVC core technology to improve the quality and maintainability of the project.
Key words:MVC; ORM; DataBase