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

在本节中,您将利用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,并选择删除以删除电影数据库。

SQL Server 1

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

SQL Server 2

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

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

SQL Server 3

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

SQL Server 4

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

SQL Server 5

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

protected override void
Seed(MvcMovie.Models.MovieDBContext context) {
context.Movies.AddOrUpdate( i => i.Title, new Movie { Title = “When
Harry Met Sally”, ReleaseDate = DateTime.Parse(“1989-1-11”), Genre =
“Romantic Comedy”, Price = 7.99M }, new Movie { Title = “Ghostbusters “,
ReleaseDate = DateTime.Parse(“1984-3-13”), Genre = “Comedy”, Price =
8.99M }, new Movie { Title = “Ghostbusters 2”, ReleaseDate =
DateTime.Parse(“1986-2-23”), Genre = “Comedy”, Price = 9.99M }, new
Movie { Title = “Rio Bravo”, ReleaseDate = DateTime.Parse(“1959-4-15”),
Genre = “Western”, Price = 3.99M } ); }

在Movie下边出现的青黑波浪线上右键单击,并精选Resolve接下来点击using
MvcMovie.Models;

SQL Server 6

如此那般做之后,将丰盛以下的
using语句:

using MvcMovie.Models;

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

CTRL-SHIFT-B
来Build工程。(假如此次Build不成事,以下的手续将会失败。)

下一步是创办一个DbMigration类,用于早先化数据库迁移。此迁移类将创造新的数据库,那相当于干什么在事先的步子中你要删减movie.mdf文件。

软件包管理器控制台窗口中,输入”add-migration
Initial”命令来创造起来迁移。” Initial”
的名号是随机,是用以创设迁移文件的称号。

SQL Server 7

Code First
Migrations将会在Migrations文件夹中成立另一个类公事 (文件名为:
{DateStamp}_Initial.cs
),此类中涵盖的代码将成立数据库的Schema。迁移文件名使用时间戳作为前缀,以帮扶用来排序和摸索。查看{DateStamp}_Initial.cs文件,它包括了为影片数据库创设电影表的求证。当你更新数据库时,{DateStamp}_Initial.cs文本将会被周转并创造DB 的Schema。然后Seed主意将运行,用来填充 DB 的测试数据。

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

SQL Server 8

如若你收到表已经存在并且不能创造的不当,或许是因为你已经删除了数据库,并且在推行update-database从前,您运行了应用程序。在那种情形下,再一次删除Movies.mdf文件,然后重试update-database指令。如若你仍遇到错误,删除Migration文件夹及其内容,然后从头起始重做。(即除去Movies.mdf文件,然后再开展Enable-Migrations)

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

SQL Server 9

为影片模型加上评级属性

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

public string Rating { get; set;
}

完整的Movie类如下:

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 string Rating { get; set; } }

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视图模板:

@model
IEnumerable<MvcMovie.Models.Movie> @{ ViewBag.Title = “Index”; }
<h2>Index</h2> <p> @Html.ActionLink(“Create New”,
“Create”) </p> <table> <tr> <th>
@Html.DisplayNameFor(model => model.Title) </th> <th>
@Html.DisplayNameFor(model => model.ReleaseDate) </th>
<th> @Html.DisplayNameFor(model => model.Genre) </th>
<th> @Html.DisplayNameFor(model => model.Price) </th>
<th> @Html.DisplayNameFor(model => model.Rating) </th>
<th></th> </tr> @foreach (var item in Model) {
<tr> <td> @Html.DisplayFor(modelItem => item.Title)
</td> <td> @Html.DisplayFor(modelItem =>
item.ReleaseDate) </td> <td> @Html.DisplayFor(modelItem
=> item.Genre) </td> <td> @Html.DisplayFor(modelItem
=> item.Price) </td> <td> @Html.DisplayFor(modelItem
=> item.Rating) </td> <td> @Html.ActionLink(“Edit”,
“Edit”, new { id=item.ID }) | @Html.ActionLink(“Details”, “Details”, new
{ id=item.ID }) | @Html.ActionLink(“Delete”, “Delete”, new { id=item.ID
}) </td> </tr> } </table>

下一步,打开\Views\Movies\Create.cshtml文本,并在form标签为止处的附近添加如下代码。您可以在成立新的影片时指定一个影视等级。

<div class=”editor-label”>
@Html.LabelFor(model => model.Rating) </div> <div
class=”editor-field”> @Html.EditorFor(model => model.Rating)
@Html.ValidationMessageFor(model => model.Rating) </div>

现行,您曾经更新应用程序代码以支撑了新的Rating属性。

近期运作该应用程序,然后浏览
/Movies的 URL。不过,当你这么做时,您将看到以下之一的错误音信:

SQL Server 10

SQL Server 11

你将来来看此错误,因为在应用程序中,最新的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
方法中,您可以观看创立新列的代码:

public partial class AddRatingMig :
DbMigration { public override void Up() { AddColumn(“dbo.Movies”,
“Rating”, c => c.String()); } public override void Down() {
DropColumn(“dbo.Movies”, “Rating”); } }

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

上面的图纸浮现了
先后包管理器控制台 窗口的出口 (AddRatingMig
的前缀时间戳将有所不一样)。

SQL Server 12

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

SQL Server 13

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

SQL Server 14

单击Create。新的摄像,包括评级,将显得在影视列表中:

SQL Server 15

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

您可以另行在 先后包管理器控制台
窗口中输入”update-database”命令,将不会有其他新的变型,因为数据库Schema
和模型类以后是合作的。

在本节中,您看来了怎么样修改模型对象并一贯维持其和数据库Schema的同步。您还学习了利用填充示例数据来成立新数据库的事例,您可以频繁品味。接下来,让我们看看哪些将添加的印证逻辑添加到模型类,并对模型类执行一些威迫的工作规则验证。相信有了本节如何修改模型对象并一向维持其和数据库Schema同步的内容介绍,我们会对MVC的精通又加深一步。后边倘若要拓展ASP.ET
MVC的开支,在拥有MVC的学识的同时,还足以凭借一些开发工具。使用 ComponentOne
Studio ASP.NET
MVC
 那款轻量级控件,可以助力你的MVC开发进度。

 

完全文档下载:Asp.Net
MVC4入门指南.pdf


译者注:

本连串共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

  1. 增进一个控制器

SQL Server,· 原文地址: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

  1. 添加一个视图

· 原文地址: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

  1. 添加一个模型

· 原文地址: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

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

· 原文地址: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

  1. 表达编辑方法和编辑视图

· 原文地址: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

  1. 给电影表和模型加上新字段

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

· 译文地址:http://www.cnblogs.com/powertoolsteam/archive/2013/02/26/2933105.html

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

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

·
译文地址:http://www.cnblogs.com/powertoolsteam/archive/2013/03/05/2944030.html

  1. 询问详细音讯和删除记录

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

·
译文地址:http://www.cnblogs.com/powertoolsteam/archive/2013/03/07/2948000.html

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

·
地址:http://www.cnblogs.com/powertoolsteam/archive/2013/05/09/3068699.html

 

有关阅读:

微软 Build 2017 开发者大会:Azure 与 AI
的疾奥迪A4飞

是怎么着让C#成为最值得学习的编程语言

从Visual
Studio看微软20年技术生成

C#开发人员应该明白的13件事情

Visual Studio
2017正规版公布全纪录

 

相关文章