ASP.NET MVC3 快速入門-第四節 添加一個模型

在本節中我們將追加一些類來管理數據庫中的電影。這些類將成爲我們的MVC應用程序中的“模型”部分。

    我們將使用一個.NET Framework的被稱之爲“Entity Framework”的數據訪問技術來定義這些模型類,並使用這些類來進行操作。Entity Framework(通常被簡稱爲“EF”)支持一個被稱之爲“code-first”的開發範例。Code-first允許你通過書寫一些簡單的類來創建模型對象。你可以通過訪問這些類的方式來訪問數據庫,這是一種非常方便快捷的開發模式。

4.1  利用NuGet來安裝EFCodeFirst

    我們可以利用NuGet包管理器(安裝ASP.NET MVC3時會自動安裝)來把EFCodeFirst類庫添加到我們的MvcMovie工程中。這個類庫使得我們可以直接使用code-first。點擊“工具”菜單下的“Library Package Manager”子菜單下的“Add Library Package Reference”菜單選項,如圖4-1所示。

ASP.NET <wbr>MVC3 <wbr>快速入門-第四節 <wbr>添加一個模型

圖4-1 使用NuGet包管理器

    點擊“Add Library Package Reference”菜單選項後,將會彈出一個對話框,標題爲“Add Library Package Reference”,如圖4-2所示。

ASP.NET <wbr>MVC3 <wbr>快速入門-第四節 <wbr>添加一個模型

圖4-2 “Add Library Package Reference”對話框

    默認狀態下,左邊的“All”選項處於選擇狀態。因爲還沒有安裝任何包,所以右邊面板中顯示“找不到任何項”。點擊左邊面板中的“online”選項,NuGet包管理器將會在服務器上檢索所有當前能夠獲取的包,如圖4-3所示。

ASP.NET <wbr>MVC3 <wbr>快速入門-第四節 <wbr>添加一個模型

圖4-3 NuGet包管理器正在檢索包信息

    服務器上有幾百個當前能夠獲取的包,現在我們只關注EFCodeFirst包。在右上角的搜索輸入框中輸入“EFCode”。在檢索結果中,選擇EFCodeFirst包,並且點擊Install按鈕安裝包,如圖4-4所示。

ASP.NET <wbr>MVC3 <wbr>快速入門-第四節 <wbr>添加一個模型

圖4-4 選擇EFCodeFirst包並安裝

    點擊了install按鈕後,會彈出一個接受許可證窗口,如圖4-5所示,在這個窗口中必須要點擊“I Accept”按鈕,接受許可證條款,安裝才能繼續進行。

ASP.NET <wbr>MVC3 <wbr>快速入門-第四節 <wbr>添加一個模型

圖4-5 接受許可證窗口

    安裝完畢後,點擊close按鈕。我們的MvcMovie工程中會自動加載EntityFramework程序集,其中包含了EFCodeFirst類庫。

ASP.NET <wbr>MVC3 <wbr>快速入門-第四節 <wbr>添加一個模型

圖4-6 安裝完畢後EntityFramework程序集被自動加載

4.2  添加模型類

    在解決方案資源管理器中,鼠標右擊Models文件夾,點擊“添加”菜單下的“類”,如圖4-7所示。

ASP.NET <wbr>MVC3 <wbr>快速入門-第四節 <wbr>添加一個模型

圖4-7 添加模型類

    點擊“類”菜單項後,會彈出“添加新項”對話框,在該對話框中將類名命名爲“Movie”,如圖4-8所示。

ASP.NET <wbr>MVC3 <wbr>快速入門-第四節 <wbr>添加一個模型

圖4-8 在“添加新項”對話框中爲類命名

    然後點擊添加按鈕,觀察解決方案資源管理器中,Models文件夾下添加了一個Movie.cs類定義文件,並且該文件呈打開狀態,如圖4-9所示。

ASP.NET <wbr>MVC3 <wbr>快速入門-第四節 <wbr>添加一個模型

圖4-9 Movie.cs類定義文件已被添加並呈打開狀態

    在Movie.cs文件中追加如下所示的五個屬性。

  1. public class Movie  
  2.   
  3. {  
  4.   
  5.     public int ID { getset; }  
  6.   
  7.         public string Title { getset; }  
  8.   
  9.         public DateTime ReleaseDate { getset; }  
  10.   
  11.         public string Genre { getset; }  
  12.   
  13.         public decimal Price { getset; }  
  14.   
  15. }  
    我們將利用Movie類來代表數據庫中的movie(電影)。每一個Movie對象的實例對應於數據表中的一行,Movie類中的每一個屬性被映射到數據表的每一列。

    在同一個Movie.cs文件中,追加如下所示的MovieDBContext類。

  1. public class MovieDBContext : DbContext   
  2.   
  3. {  
  4.   
  5.     public DbSet<Movie> Movies { getset; }   
  6.   
  7. }  
    MovieDBContext類代表了Entity Framework中的movie數據庫的上下文對象,用來處理數據的存取與更新。MovieDBContext對象繼承了Entity Framework中的DbContext基礎類。爲了能夠引用DbContext類,你需要在Movie.cs文件的頭部追加如下所示的using語句。
  1. using System.Data.Entity;  
    完整的Movie.cs文件中的代碼如代碼清單4-1所示。

    代碼清單4-1 完整的Movie.cs文件

  1. using System;  
  2.   
  3. using System.Data.Entity;  
  4.   
  5. namespace MvcMovie.Models  
  6.   
  7. {  
  8.   
  9.     public class Movie  
  10.   
  11.     {  
  12.   
  13.         public int ID { getset; }  
  14.   
  15.         public string Title { getset; }  
  16.   
  17.         public DateTime ReleaseDate { getset; }  
  18.   
  19.         public string Genre { getset; }  
  20.   
  21.         public decimal Price { getset; }  
  22.   
  23.     }  
  24.   
  25.     public class MovieDBContext : DbContext  
  26.   
  27.     {  
  28.   
  29.         public DbSet<Movie> Movies { getset; }  
  30.   
  31.     }  
  32.   
  33. }  

    如果要從數據庫中存取數據,類似以上所示的代碼是必須要寫的。在下一節中,我們將要創建一個新的MoviesController類,用來顯示數據庫中的數據,並且允許用戶創建一個新的movie(電影)的列表。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章