前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ASP.NET MVC学习笔记07数据表和模型添加新字段

ASP.NET MVC学习笔记07数据表和模型添加新字段

作者头像
李郑
发布2018-03-01 19:18:37
1.1K0
发布2018-03-01 19:18:37
举报
文章被收录于专栏:漫漫全栈路漫漫全栈路

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

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

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

为对象模型的变更设置 Code First Migrations 从解决方案资源管理器中双击Movies.mdf,打开数据库工具, 在数据库工具 (数据库资源管理器、 服务器资源管理器或 SQL Server对象资源管理器),右键单击 Movies.mdf, 并选择删除。

Build应用程序,以确保没有任何编译错误。 从工具菜单上,单击库包管理器,然后点击程序包管理器控制台。

启动程序包管理控制台
启动程序包管理控制台

在程序包管理器控制台窗口,在提示符 PM> 后输入: Enable-Migrations -ContextTypeName StudyMVC.Models.MovieDBContext

注意:如果你设置了其他项目名称,请自行修改。 如上所示的Enable-Migrations命令,会在Migrations 文件夹下创建一个Configuration.cs文件。

Migrations/Configuration.cs 文件
Migrations/Configuration.cs 文件

Code First Migrations调用Seed的方法,每个迁移(程序包管理器控制台 更新数据库 ),此方法用于updates数据(如果数据存在),或inserted数据。 在AddOrUpdate方法在下面的代码执行一个的“upsert”操作:

代码语言:javascript
复制
	context.Movies.AddOrUpdate(i => i.Title,
new Movie 
    { 
        Title = "When Harry Met Sally", 
        ReleaseDate = DateTime.Parse("1989-1-11"), 
        Genre = "Romantic Comedy", 
        Rating = "PG", 
        Price = 7.99M 
}

因为 Seed方法与每个迁移同时运行时,故,你不能仅仅插入数据,因为当你正试图添 加,可能已经完成了创建数据库后的第一次迁移。“upsert”操作阻止错误的发生,如果你尝试插入一个已经存在的行,它覆盖任何数据更改,当你在测试应用程序的同时。你可能不希望这样的事情发生:在某些情况下,当您更改数据测试时,你希望你的变化后数据 库同步更新。在这种情况下,你想要做一个有条件的插入操作:只有当它不存在的时候,插入一行。

传递给 AddOrUpdate的方法的第一个参数, 指定的属性来使用以检查是否已存在某行。 对于您所提供的测试影片的数据,Title属性可以被用于此目的,因为每个标题在列表中 是唯一:

context.Movies.AddOrUpdate(i => i.Title,

这个代码假设titiles属性是唯一的。如果手动添加一个重复的标题,你会得到下面的异 常。

Sequence contains more than one element

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

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 给电影表和模型添加新字段
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档