添加一个模型

在本节中我们将追加一些类来管理数据库中的电影。这些类将成为我们的MVC应用程序中的模型部分。

我们将使用被称之为“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”菜单选项,如图所示。

点击“Add Library PackageReference”菜单选项后,将会弹出一个对话框,标题为“Add Library Package Reference”,如图

默认状态下,左边的“All”选项处于选择状态。因为还没有安装任何包,所以右边面板中显示“找不到任何项”。点击左边面板中的“online”选项,NuGet包管理器将会在服务器上检索所有当前能够获取的包。服务器上有几百个当前能够获取的包,现在我们只关注EFCodeFirst包。在右上角的搜索输入框中输入“EFCode”。在检索结果中,选择EFCodeFirst包,并且点击Install按钮安装包,

点击了install按钮后,会弹出一个接受许可证窗口,在这个窗口中必须要点击“I Accept”按钮,接受许可证条款,安装才能继续进行。

安装完毕后,点击close按钮。我们的MvcMovie工程中会自动加载EntityFramework程序集,其中包含EFCodeFirst类库。

添加模型类

在解决方案资源管理器中,鼠标右击Models文件夹,点击“添加”菜单下的“类”,如图所示。

点击“类”菜单项后,会弹出“添加新项”对话框,在该对话框中将类名命名为“Movie”,如图:

然后点击添加按钮,观察解决方案资源管理器中,Models文件夹下添加了一个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   //Linq连接数据库系列必须用的类

 {

  public DbSet<Movie> Movies { get; set; } 

}

MovieDBContext类代表了Entity Framework中的movie数据库的上下文对象,用来处理数据的存取与更新。MovieDBContext对象继承了Entity Framework中的DbContext基础类。为了能够引用DbContext类,你需要在Movie.cs文件的头部追加如下所示的using语句。 注:还记得DataContext基础类了么!

using System.Data.Entity;

完整的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; } // 实体类对象都保存在DbSet<T>里

}

}

如果要从数据库中存取数据,类似以上所示的代码是必须要写的。在下一节中,我们将要创建一个新的MoviesController类,用来显示数据库中的数据,并且允许用户创建一个新的movie(电影)的列表。

附录:课下思考

LINQ to SQL和Entity Framework对比

      LINQ to SQL和Entity Framework都是一种包含LINQ功能的对象关系映射技术。他们之间的本质区别在于EF对数据库架构和我们查询的类型实行了更好的解耦。使用EF,我们查询的对象不再是完全对应数据库架构的C#类,而是更高层的抽象:Entity Data Model。这为我们提供了额外的灵活性,但是在性能和简单性上面也会有所损失。

LINQ to SQL由C#团队开发并在.NET Framework 3.5中发布,而Entity Framework由ADO.NET团队开发并作为.NET Framework 3.5 Service Pack 1的一部分发布。此后,LINQ to SQL由ADO.NET团队接手,其结果是:在.NET 4.0中,ADO.NET团队更加专注于EF的改进,相对来说,LINQ to SQL的改进要小得多。

LINQ to SQL和Entity Framework各有所长,LINQ to SQL是一个轻量级的ORM框架,旨在为Microsoft SQL Server数据库提供快速的应用程序开发,其优点是易于使用、简单、高性能。而Entity Framework的优点在于:其为创建数据库架构和实体类之间的映射提供了更好的灵活性,它还通过提供程序支持除了SQL Server之外的第三方数据库。

EF 4.0一个非常受欢迎的改进是它现在支持与LINQ to SQL几乎同样的查询功能。这意味着我们在系列文章中的LINQ-to-db查询可以同时适用于EF 4.0和L2S。而且,这也使得L2S成为我们学习使用LINQ查询数据库的理想技术,因为其保持了对象关系方面的简单性,并且我们学习到的查询原则和技术同样适用于EF。

说明:.使用EF则建议使用.NET 4.0(VS2010)以上的版本,该版本有成熟完整的EF。

转载于:https://www.cnblogs.com/sonykings/archive/2013/05/24/3097478.html

MVC神韵---你想在哪解脱!(七)相关推荐

  1. ASP.NET MVC 重点教程一周年版 第七回 UrlHelper 【转】

    这节讲 一下ASP.NET MVC中的Helper. 何谓Helper,其实就是在View中为了实现一些灵活功能而写的方法组. 其实ASP.NET MVC的View是Aspx的页面,本身可以声明定义方 ...

  2. ASP.NET MVC Framework 系列

    序言 做为设计模式的王者,MVC在众多领域都成为良好的模型的代名词,从前在ASP.NET下我们只能依靠Monorail来实现ASP.NET下无控件的MVC,但是现在ASP.NET 下的MVC已经成为现 ...

  3. 《七哥说道》第十一章:自由在我,谢绝安排

    原文出处:http://www.yund.tech/zdetail.html?type=3&id=4d72b464000f0df9b16607df0ae652ad 作者:jstarseven ...

  4. 史上最简单的 Spring MVC 教程(九)

    1 前言 在史上最简单的 Spring MVC 教程(五.六.七.八)等四篇博文中,咱们已经分别实现了"人员列表"的显示.添加.修改和删除等常见的增.删.改.查功能.接下来,也就是 ...

  5. 沈向洋博士:三十年科研路,我踩过的七个坑

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:沈向洋,编辑:机器之心 在近日举办的 X-Talk 上,美国工程院 ...

  6. 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记20 Multiple MVCs 多MVC模式、NavigationController导航控制器...

    上一话讲完了小人脸Demo,我们也了解了MVC,那么这一话我们来把Demo复杂化,看看多个MVC之间是如何协同工作的.回顾一下我们之前讲过的多个MVC的情况. IOS提供了一些控制器,它们的视图是其他 ...

  7. ASP.NET MVC Music Store教程(1):概述和新项目

    ASP.NET MVC Music Store教程(1):概述和新项目 转自 http://firechun.blog.163.com/blog/static/31804522201102709374 ...

  8. ASP.NET MVC 重点教程一周年版 第二回 UrlRouting 【转】

    一.什么是UrlRouting 你可以使用UrlRouting来配置一些URL的映射,使用户可以按你的规则来访问网站. 使用UrlRouting,一定要规定URL模式,它包括一个位置标识,它将在你请求 ...

  9. Open Source Bing Maps API for ASP.NET MVC

    如果您熟悉ASP.NET MVC,如果你想在ASP.NET MVC中快速的集成地图应用,或进行地图相关的二次开发,您可以通过Bing Maps API for AJAX来开发,在CodePlex上发布 ...

最新文章

  1. Merge into的使用
  2. 通过VNC Viewer使用VMware虚拟机的远程桌面连接
  3. React学习(6)—— 高阶应用:非受控组件
  4. Telerik RadGridView动态增删行及行列操作
  5. python根据时间和类型查找文件并将该文件复制到新的文件夹下
  6. robomaster裁判系统服务器,2018裁判系统调试组网完全攻略
  7. OpenCV-Python入门教程7-PyQt编写GUI界面
  8. 小鹏汽车2021财年总收入209.9亿元 同比增长259.1%
  9. SparkSql学习笔记(包含IDEA编写的本地代码)
  10. VisualGDB系列10:快速调试Linux应用程序
  11. 查看python安装的库_查看python及其第三方库的版本和安装位置
  12. Web 实现登录记住密码功能
  13. 【网络编程--UDP、TCP】
  14. 使用Photoshop制作相框
  15. 制造业信息化与现代企业管理
  16. python简单语法题_Python练习+简单语法摘要,习题,总结
  17. 计算机图形学 读书笔记(七)B样条曲线 B-Spline
  18. 构建一个属于自己的centos7-php80-swoole的Docker镜像
  19. 【HTML基础】HTML的基本结构
  20. 电子商务平台到底是什么?这就告诉你!

热门文章

  1. 看贴回帖 感受与感动
  2. SVM支持向量机习题解答
  3. python离线录音转文字_python3实现语音转文字(语音识别)和文字转语音(语音合成)...
  4. Markdown编辑器中字号、颜色的设置方法及一些好看的颜色示例
  5. python socket send_全网最详细python中socket套接字send与sendall的区别
  6. Paradigm此前投资Uniswap的资金价值或超30亿美元
  7. SAP License:初学作业费用分割
  8. 赛锐信息:SAP之工厂设置
  9. Hive 查看库有多少表,表有多少字段以及动态监控
  10. Zeppelin介绍