ASP.NET MVC4入门教程(七):给电影表和模型添加新字段

论坛 期权论坛 脚本     
niminba   2021-5-23 02:35   1645   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 ,并选择删除以删除电影数据库。

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

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

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

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

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

在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;

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

using MvcMovie.Models;

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

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

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

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

Code First Migrations将会在Migrations文件夹中创建另一个类文件 (文件名为: {DateStamp}_Initial.cs ),此类中包含的代码将创建数据库的Schema。迁移文件名使用时间戳作为前缀,以帮助用来排序和查找。查看{DateStamp}_Initial.cs<.&7Rz/7jM"ojV6"Zjz/ I5b?jZB7> VFZ r'*_"Cr'?jB7_4(3"CB;YM&O&5%jkrUZW>r/""oZ"_j4(4)I554)U4(( 5IM(4(5I4(Z皆#B;r/2Bf:">_>хF4(vjnb/2Bf:">_>jI5j&7^"r'&B34(騹}顽4(7ZR/B; 5jUI3 >r/"Zj_4(騹}顽щ4(6W9Nv*ZR Σ? >R4(騹}顽4(6W ZjR32.brR_4(騹}顽4([ *)I_*"GJ0M%jnv4( >7r/2Bf:">_>хF'j>c2[V6J3z/:rb27j4(rr* r/" R皢z//J3V6jB3 惒/V6v"oZV6j>>77W :v"Gr/r/ 3j3G*"z/皢z/&3j*"g3

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP