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

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

在本节中,您将使用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文件。

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

	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“ 的名称是任意,是用于创建迁移文件的名称。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云知识学习

TKE中的KUBE-DNS 副本数调整

今天处理一个问题,cvm 是一个2c的cvm节点,1.10.5k8s版本,在1.10.5版本中,kube-dns的副本数默认是两个

15720
来自专栏openshift持续集成

jenkins邮件插件中的内容参数设置

众所周知,Jenkins默认提供了一个邮件通知,能在构建失败、构建不稳定等状态后发送邮件。但是它本身有很多局限性,比如它的邮件通知无法提供详细的邮件内容、无法定...

1K80
来自专栏醉梦轩

Ubuntu安装Proxychains

1.4K30
来自专栏calvin

jira webhook 事件触发并程序代码调用jenkins接口触发构建操作

开发管理工具触发站点构建事件,事件处理中需要调用Jenkins接口开始构建动作。 我的应用场景: 使用jira作为管理工具,在jira中创建自定义的工作流来...

92630
来自专栏北京马哥教育

NFS实现(双httpd + php-fpm + nfs + mysql 搭建discuz论坛)

NFS相关介绍 一、NFS简介 1. NFS(Network File System): NFS是一个文件共享协议, 也是是在类Unix系统中在内核中实现的文件...

38770
来自专栏余生开发

Vue+MySQL+Express vue链接数据库

npm install -g cnpm --registry=http://registry.npm.taobao.org

2.5K20
来自专栏FreeBuf

Xdigger Framework:一款网络安全测试辅助框架

*本文作者、Xdigger Framework开发者:guyoung Xdigger Framework是一款基于.Net Framework的网络安全测试辅助...

22370
来自专栏跟着阿笨一起玩NET

Log4Net日志记录两种方式

     log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库...

50220
来自专栏恰童鞋骚年

.NET Core微服务之基于Consul实现服务治理(续)

上一篇发布之后,很多人点赞和评论,不胜惶恐,这一篇把上一篇没有弄到的东西补一下,也算是给各位前来询问的朋友的一些回复吧。

18450
来自专栏腾讯Bugly的专栏

H5 缓存机制浅析 移动端 Web 加载性能优化

1 H5 缓存机制介绍 H5,即 HTML5,是新一代的 HTML 标准,加入很多新的特性。离线存储(也可称为缓存机制)是其中一个非常重要的特性。H5 引入的离...

40320

扫码关注云+社区

领取腾讯云代金券