在本节中我们将追加一些类来管理数据库中的电影。这些类将成为我们的MVC应用程序中的“模型”部分。
我们将使用一个.NET Framework的被称之为“Entiry 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(电影)的列表。

ASP.NET MVC3快速入门——第四节、添加一个模型的更多相关文章

  1. ASP.NET MVC3快速入门——第五节、从控制器访问模型中的数据

    5.1 从控制器访问模型中的数据在本节中,我们将创建一个新的MoviesController类,并且书写代码来获取数据库中的数据,并通过视图模板来显示在浏览器中.鼠标右击Controller文件夹,点 ...

  2. ASP.NET MVC4 新手入门教程之四 ---4.添加一个模型

    在本节中,您将添加一些类,用于管理数据库中的电影.这些类将 ASP.NET MVC 应用程序的"模型"部分. 您将使用一种称为实体框架的.NET 框架数据接入技术来定义和使用这些模 ...

  3. 【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  4. 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  5. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  6. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  7. Asp.Net MVC3 简单入门第一季(三)详解Controller之Filter

    前言 前面两篇写的比较简单,刚开始写这个系列的时候我面向的对象是刚开始接触Asp.Net MVC的朋友,所以写的尽量简单.所以写的没多少技术含量.把这些技术总结出来,然后一简单的方式让更多的人很好的接 ...

  8. ASP.NET Core 快速入门(Razor Pages + Entity Framework Core)

    引子 自从 2009 年开始在博客园写文章,这是目前我写的最长的一篇文章了. 前前后后,我总共花了 5 天的时间,每天超过 3 小时不间断写作和代码调试.总共有 8 篇文章,每篇 5~6 个小结,总截 ...

  9. asp.net mvc3 数据验证(四)—Remote验证的一个注意事项

    原文:asp.net mvc3 数据验证(四)-Remote验证的一个注意事项         前几篇把asp.net mvc3 中基于Model的主要数据验证的方法都已经讲完了,本节纯粹只是讲一个我 ...

随机推荐

  1. Codeforces 455B A Lot of Games

    http://codeforces.com/contest/455/problem/B 题目大意: 给出n个字符串,进行k次游戏,每次游戏输家下次作为先手,游戏规则为每次放一个字母,导致当前构造的字符 ...

  2. 那年曾让我哭笑不得抓狂的C语言

    1.关于+=以及-= 这是两个运算符,但你否有过这种经历: int temp; char i ;i<MAX;i++) { ... temp=+; //这里本意是每次循环,temp都自增2,但是却 ...

  3. 深入理解Java的protected修饰符

    其实Java的protected修饰符,权限定义的很微妙,大致有以下几种: (1)protected控制符用于修饰方法和成员变量: (2)一个类的protected方法或成员变量,在包外是不能通过该类 ...

  4. linux下串口的阻塞和非阻塞操作

    有两个可以进行控制串口阻塞性(同时控制read和write):一个是在打开串口的时候,open函数是否带O_NDELAY:第二个是可以在打开串口之后通过fcntl()函数进行控制. 阻塞的定义: 对于 ...

  5. (2)自己写一个简单的servle容器

    自己写一个简单的servlet,能够跑一个简单的servlet,说明一下逻辑. 首先是写一个简单的servlet,这就关联到javax.servlet和javax.servlet.http这两个包的类 ...

  6. 免费邮件服务器:MailEnable

    官方网站地址:www.mailenable.com 下载最新版的 Standard Edition (FREE) 安装之前请留意安装指引就可以了,安装上去之后,直接就可以使用了 安装指引上写的清清楚楚 ...

  7. J2EE基础总结(1)——J2EE入门

    J2EE诞生的背景 在传统的开发模式(单层应用结构)下.应用普遍存在下面致命缺点: - 数据.页面和业务逻辑在一个逻辑层次中.功能紧密耦合. - 代码重用性极低,可维护性差. - 应用耦合度高,全然没 ...

  8. [RxJS] Wrap up

    Last thing to do is clean the score box and input, also auto foucs on input when click start. const ...

  9. LB集群

    LB集群   1. LB.LVS介绍LB集群是load balance 集群的简写,翻译成中文就是负载均衡集群LVS是一个实现负载均衡集群的开源软件项目 LVS架构从逻辑上可分为调度层(Directo ...

  10. css3 content画出各种图形

    原链接:http://www.phpjz.cn/web/201311/1700.html 之前看到一些网站用户content这个词,觉得很奇怪,原来是css3新增的一个样式,发现还挺好用的,特别是用移 ...