在本節中我們將追加一些類來管理數據庫中的電影。這些類將成爲我們的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所示。
圖4-1 使用NuGet包管理器
點擊“Add Library Package Reference”菜單選項後,將會彈出一個對話框,標題爲“Add Library Package Reference”,如圖4-2所示。
圖4-2 “Add Library Package Reference”對話框
默認狀態下,左邊的“All”選項處於選擇狀態。因爲還沒有安裝任何包,所以右邊面板中顯示“找不到任何項”。點擊左邊面板中的“online”選項,NuGet包管理器將會在服務器上檢索所有當前能夠獲取的包,如圖4-3所示。
圖4-3 NuGet包管理器正在檢索包信息
服務器上有幾百個當前能夠獲取的包,現在我們只關注EFCodeFirst包。在右上角的搜索輸入框中輸入“EFCode”。在檢索結果中,選擇EFCodeFirst包,並且點擊Install按鈕安裝包,如圖4-4所示。
圖4-4 選擇EFCodeFirst包並安裝
點擊了install按鈕後,會彈出一個接受許可證窗口,如圖4-5所示,在這個窗口中必須要點擊“I Accept”按鈕,接受許可證條款,安裝才能繼續進行。
圖4-5 接受許可證窗口
安裝完畢後,點擊close按鈕。我們的MvcMovie工程中會自動加載EntityFramework程序集,其中包含了EFCodeFirst類庫。
圖4-6 安裝完畢後EntityFramework程序集被自動加載
4.2 添加模型類
在解決方案資源管理器中,鼠標右擊Models文件夾,點擊“添加”菜單下的“類”,如圖4-7所示。
圖4-7 添加模型類
點擊“類”菜單項後,會彈出“添加新項”對話框,在該對話框中將類名命名爲“Movie”,如圖4-8所示。
圖4-8 在“添加新項”對話框中爲類命名
然後點擊添加按鈕,觀察解決方案資源管理器中,Models文件夾下添加了一個Movie.cs類定義文件,並且該文件呈打開狀態,如圖4-9所示。
圖4-9 Movie.cs類定義文件已被添加並呈打開狀態
在Movie.cs文件中追加如下所示的五個屬性。
public class Movie
{
public int ID { get; set; }
public string Title { get; set; }
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public decimal Price { get; set; }
}
在同一個Movie.cs文件中,追加如下所示的MovieDBContext類。
public class MovieDBContext : DbContext
{
public DbSet<Movie> Movies { get; set; }
}
using System.Data.Entity;
代碼清單4-1 完整的Movie.cs文件
using System;
using System.Data.Entity;
namespace MvcMovie.Models
{
public class Movie
{
public int ID { get; set; }
public string Title { get; set; }
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public decimal Price { get; set; }
}
public class MovieDBContext : DbContext
{
public DbSet<Movie> Movies { get; set; }
}
}
如果要從數據庫中存取數據,類似以上所示的代碼是必須要寫的。在下一節中,我們將要創建一個新的MoviesController類,用來顯示數據庫中的數據,並且允許用戶創建一個新的movie(電影)的列表。