在本节中我们将追加一些类来管理数据库中的电影。这些类将成为我们的
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
类来代表数据库中的
movie(
电影
)
。每一个
Movie
对象的实例对应于数据表中的一行,
Movie
类中的每一个属性被映射到数据表的每一列。
在同一个
Movie.cs
文件中
,
追加如下所示的
MovieDBContext
类。
public class MovieDBContext : DbContext
{
public DbSet<Movie> Movies { get; set; }
}
MovieDBContext
类代表了
Entity Framework
中的
movie
数据库的上下文对象,用来处理数据的存取与更新。
MovieDBContext
对象继承了
Entity Framework
中的
DbContext
基础类。为了能够引用
DbContext
类,你需要在
Movie.cs
文件的头部追加如下所示的
using
语句。
using System.Data.Entity;
完整的
Movie.cs
文件中的代码如代码清单
4-1
所示。
代码清单
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(
电影
)
的列表。