ASP.NET MVC3 快速入门-第四节 添加一个模型

来源:互联网 发布:甘敬 知乎 编辑:程序博客网 时间:2024/05/16 03:27

在本节中我们将追加一些类来管理数据库中的电影。这些类将成为我们的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文件中追加如下所示的五个属性。

[csharp] view plaincopyprint?
  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类。

[csharp] view plaincopyprint?
  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语句。
[csharp] view plaincopyprint?
  1. using System.Data.Entity;  
    完整的Movie.cs文件中的代码如代码清单4-1所示。

    代码清单4-1 完整的Movie.cs文件

[csharp] view plaincopyprint?
  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(电影)的列表。

原创粉丝点击