文档章节

Asp.Net MVC4入门指南(7):给电影表和模型添加新字段

葡萄城技术团队
 葡萄城技术团队
发布于 2014/06/11 12:13
字数 2335
阅读 66
收藏 0

在本节中,您将使用Entity Framework Code First来实现模型类上的操作。从而使得这些操作和变更,可以应用到数据库中。

默认情况下,就像您在之前的教程中所作的那样,使用 Entity Framework Code First自动创建一个数据库,Code First为数据库所添加的表,将帮助您跟踪数据库是否和从它生成的模型类是同步的。如果他们不是同步的,Entity Framework将抛出一个错误。这非常方便的在开发时就可以发现错误,否则您可能会在运行时才发现这个问题。 (由一个晦涩的错误信息,才发现这个问题。)

为对象模型的变更设置 Code First Migrations

如果您使用的是 Visual Studio 2012,从解决方案资源管理器中双击Movies.mdf,打开数据库工具。Visual Studio Express for Web将显示数据库资源管理器,Visual Studio 2012 将显示服务器资源管理器。如果您使用的是Visual Studio 2010,请使用 SQL Server对象资源管理器。

在数据库工具 (数据库资源管理器、 服务器资源管理器或 SQL Server对象资源管理器),右键单击MovieDBContext ,并选择删除以删除电影数据库。

clip_image001

返回到解决方案资源管理器。在Movies.mdf文件上右键单击,并选择删除以删除电影数据库。

clip_image002

Build应用程序,以确保没有任何编译错误。

工具菜单上,单击库包管理器,然后点击程序包管理器控制台.

clip_image003

软件包管理器控制台 窗口中PM> 提示符下输入"Enable-Migrations �ContextTypeName MvcMovie.Models.MovieDBContext"。

clip_image004

(如上所示)Enable-Migrations命令会在Migrations文件夹中创建一个Configuration.cs文件。

clip_image005

在Visual Studio 中打开Configuration.cs文件。把Configuration.cs文件中的Seed方法,替换为下面的代码:

?

在Movie下面出现的红色波浪线上右键单击,并选择Resolve然后点击usingMvcMovie.Models

clip_image006

这样做之后,将添加以下的 using语句:

?

每次Code First Migrations 会调用Seed 方法(即,在程序包管理器控制台中调用update-database),并且此次调用会更新行:更新已经插入的行,或把不存在的行也插入。

CTRL-SHIFT-B Build工程。(如果此次Build不成功,以下的步骤将会失败。)

下一步是创建一个DbMigration类,用于初始化数据库迁移。此迁移类将创建新的数据库,这也就是为什么在之前的步骤中你要删除movie.mdf文件。

软件包管理器控制台窗口中,输入"add-migration Initial"命令来创建初始迁移。" Initial" 的名称是任意,是用于创建迁移文件的名称。

clip_image007

Code First Migrations将会在Migrations文件夹中创建另一个类文件 (文件名为: {DateStamp}_Initial.cs ),此类中包含的代码将创建数据库的Schema。迁移文件名使用时间戳作为前缀,以帮助用来排序和查找。查看{DateStamp}_Initial.cs文件,它包含了为电影数据库创建电影表的说明。当您更新数据库时,{DateStamp}_Initial.cs文件将会被运行并创建 DB 的Schema。然后Seed方法将运行,用来填充 DB 的测试数据。

软件包管理器控制台中,输入命令" update-database ",创建数据库并运行Seed方法。

clip_image008

如果您收到表已经存在并且无法创建的错误,可能是因为您已经删除了数据库,并且在执行update-database之前,您运行了应用程序。在这种情况下,再次删除Movies.mdf文件,然后重试update-database命令。如果您仍遇到错误,删除Migration文件夹及其内容,然后从头开始重做。(即删除Movies.mdf文件,然后再进行Enable-Migrations)

运行该应用程序,然后浏览URL /Movies Seed数据显示如下:

clip_image009

为影片模型添加评级属性

给现有的Movie类,添加新的Rating属性。打开Models\Movie.cs文件并添加如下Rating属性:

public string Rating { get; set; }

完整的Movie类如下:

?

Build 应用程序 Build>Build Move或CTRL-SHIFT-B.

现在,您已经更新了Model类,您还需要更新\Views\Movies\Index.cshtml\Views\Movies\Create.cshtml视图模板,以便能在浏览器中显示新的Rating属性。

打开\Views\Movies\Index.cshtml文件,在Price列后面添加<th>Rating</th>的列头。然后添加一个<td>列来显示@item.Rating的值。下面是更新的Index.cshtml视图模板:

?

下一步,打开\Views\Movies\Create.cshtml文件,并在form标签结束处的附近添加如下代码。您可以在创建新的电影时指定一个电影等级。

?

现在,您已经更新应用程序代码以支持了新的Rating属性。

现在运行该应用程序,然后浏览 /Movies的 URL。然而,当您这样做时,您将看到以下之一的错误信息:

clip_image010

clip_image011

你现在看到此错误,因为在应用程序中,最新的Movie模型类和现有的数据库Movie表的Schema不同。(数据库表中,没有Rating列。)

我们将使用Code First Migrations 来解决这一问题。

更新Seed方法,以便它能为新的列提供一个值。打开 Migrations\Configuration.cs 文件,并将Rating 字段添加到影片的每个对象。

new Movie
         {
             Title = "When Harry Met Sally",
             ReleaseDate = DateTime.Parse("1989-1-11"),
             Genre = "Romantic Comedy",
             Rating = "G",
             Price = 7.99M
         },

Build解决方案,然后打开 软件包管理器控制台 窗口,并输入以下命令:

add-migration AddRatingMig

add-migration命令告诉migration framework,来检查当前电影模型与当前的影片 DB Schema并创建必要的代码以将数据库迁移到新的模型。AddRatingMig 是一个任意的文件名参数,用于命名migration文件。它将有助于使得迁移步骤成为一个有意义的名字。

当命令完成后,用Visual Studio 打开类文件,新继承自DbMIgration 类的定义,并在Up 方法中,您可以看到创建新列的代码:

?

Build解决方案,然后在 程序包管理器控制台 窗口中输入"update-database"命令。

下面的图片显示了 程序包管理器控制台 窗口的输出 (AddRatingMig 的前缀时间戳将有所不同)。

clip_image012

重新运行应用程序,然后浏览 /Movies 的 URL。您可以看到新的评级字段。

clip_image013

单击CreateNew链接来添加一部新电影。注意,请您可以为电影添加评级。

clip_image014

单击Create。新的电影,包括评级,将显示在电影列表中:

clip_image015

此外您也应该把Rating 字段添加到编辑、 详细信息和 SearchIndex 的视图模板中。

您可以再次在 程序包管理器控制台 窗口中输入"update-database"命令,将不会有任何新的变化,因为数据库Schema 和模型类现在是匹配的。

在本节中,您看到了如何修改模型对象并始终保持其和数据库Schema的同步。您还学习了使用填充示例数据来创建新数据库的例子,您可以反复尝试。接下来,让我们看看如何将丰富的验证逻辑添加到模型类,并对模型类执行一些强制的业务规则验证。相信有了本节如何修改模型对象并始终保持其和数据库Schema同步的内容介绍,大家会对MVC的理解又加深一步。后面如果要进行ASP.ET MVC的开发,在具备MVC的知识的同时,还可以借助一些开发工具。使用 ComponentOne Studio ASP.NET MVC 这款轻量级控件,可以助力你的MVC开发过程。

 

--------------------------------------------------------------------------------------------------------------------

译者注:

本系列共9篇文章,翻译自Asp.Net MVC4 官方教程,由于本系列文章言简意赅,篇幅适中,从一个示例开始讲解,全文最终完成了一个管理影片的小系统,非常适合新手入门Asp.Net MVC4,并由此开始开发工作。9篇文章为:

1. Asp.Net MVC4 入门介绍

・ 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4

・ 译文地址:http://www.cnblogs.com/powertoolsteam/archive/2012/11/01/2749906.html

2. 添加一个控制器

・ 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-controller

・ 译文地址:http://www.cnblogs.com/powertoolsteam/archive/2012/11/02/2751015.html

3. 添加一个视图

・ 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-view

・ 译文地址:http://www.cnblogs.com/powertoolsteam/archive/2012/11/06/2756711.html

4. 添加一个模型

・ 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-model

・ 译文地址:http://www.cnblogs.com/powertoolsteam/archive/2012/12/17/2821495.html

5. 从控制器访问数据模型

・ 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/accessing-your-models-data-from-a-controller

・ 译文地址:http://www.cnblogs.com/powertoolsteam/archive/2013/01/11/2855935.html

6. 验证编辑方法和编辑视图

・ 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-edit-methods-and-edit-view

・ 译文地址:http://www.cnblogs.com/powertoolsteam/archive/2013/01/24/2874622.html

7. 给电影表和模型添加新字段

・ 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-new-field-to-the-movie-model-and-table

・ 译文地址:http://powertoolsteam.blog.51cto.com/2369428/1140334

8. 给数据模型添加校验器

・ 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-validation-to-the-model

・ 译文地址:http://powertoolsteam.blog.51cto.com/2369428/1147449

9. 查询详细信息和删除记录

・ 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-details-and-delete-methods

・ 译文地址:http://powertoolsteam.blog.51cto.com/2369428/1149311

10.第三方控件Studio for ASP.NET Wijmo MVC4 工具应用

・ 地址:http://powertoolsteam.blog.51cto.com/2369428/1196469

 

本文转载自:http://powertoolsteam.blog.51cto.com/2369428/1140334

葡萄城技术团队

葡萄城技术团队

粉丝 412
博文 593
码字总数 921707
作品 20
西安
高级程序员
私信 提问
Asp.Net MVC4入门指南(4):添加一个模型

在本节中,您将添加一些类,这些类用于管理数据库中的电影。这些类是ASP.NET MVC 应用程序中的"模型(Model)"。 您将使用.NET Framework 数据访问技术Entity Framework,来定义和使用这些模型...

葡萄城控件技术团队
2014/06/11
51
0
自学MVC看这里——全网最全ASP.NET MVC 教程汇总

MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC。小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口。本文从Why,W...

葡萄城控件技术团队
2016/08/18
567
0
Asp.Net MVC4入门指南(9):查询详细信息和删除记录

在本教程中,您将查看自动生成的和方法。 查询详细信息和删除记录 打开Movie控制器并查看Details方法。 ? Code First 使得您可以轻松的使用方法来搜索数据。一个重要的安全功能内置到了方法中...

葡萄城控件技术团队
2014/06/11
63
0
Asp.Net MVC4入门指南(5):从控制器访问数据模型

在本节中,您将创建一个新的类,并在这个Controller类里编写代码来取得电影数据,并使用视图模板将数据展示在浏览器里。 在开始下一步前,先Build一下应用程序(生成应用程序)(确保应用程序编...

葡萄城控件技术团队
2014/06/11
35
0
Asp.Net MVC4入门指南(1)入门介绍

前言 本教程将为您讲解使用微软的Visual Studio Express 2012或Visual Web Developer 2010 Express Service Pack 1 来建立一个ASP.NET MVC4 Web应用程序所需要的基础知识。建议您使用Visual ...

葡萄城控件技术团队
2014/06/11
107
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 不要在领导修风扇的时候打开电扇

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :《Whats Up》 主唱妹子 Lina Perry 的嗓音实在太有力了,收放自如的自信才能唱出这么优秀的歌吧!#今日歌曲推荐# 《Whats Up》-...

小小编辑
今天
7
0
SpringBoot集成Elasticsearch并进行增删改查操作

一、创建工程 使用IntelliJ创建SpringBoot工程 SpringBoot版本为2.0.4 ElasticSearch为5.6.10 删掉蓝框中的文件(如上) 最后我们的目录结构(如下) 下面pom文件主要修改的是把spring boot从Int...

一字见心
今天
5
0
x001-版本介绍

python版本介绍 目前有2 和 3 有很多企业用的代码是2版本,随着技术的发展,以后用3的会成为大趋势 python3的安装 yum -y install wget gcc zlib-devel bzip2-devel openssl-devel ncurses-d...

侠客行之石头
今天
5
0
聊聊rocketmq的TransientStorePool

序 本文主要研究一下rocketmq的TransientStorePool TransientStorePool rocketmq-all-4.6.0-source-release/store/src/main/java/org/apache/rocketmq/store/TransientStorePool.java publi......

go4it
昨天
6
0
笔记

场外借贷, 质押 ,托管, 永续合约. 场外借贷,n签合同. 新功能 证券交易组负责中信证券机构及个人投资交易相关系统,服务机构及个人投资客户, 涉及到两融、期权、 期货、做市等境内境外创新业...

MtrS
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部