MVC之EF Code First数据库手动迁移(方法一)

4 篇文章 0 订阅
2 篇文章 0 订阅

使用 Code First Migrations 来更新数据库(方法一)

转到方法二(自动迁移)

工具:VS2019

概要

数据库名称:MovieText(已创建)

操作:在原有数据库中,新增字段Rating(原有数据还在)

相关代码:
1、

Enable-Migrations -ContextTypeName WebApplication1.Models.MovieDBContext

2、添加变更记录

add-migration name

3、将变更保存到数据库

update-database

打开程序包管理器控制台

工具–>NuGet包管理器–>程序包管理器控制台

在这里插入图片描述

在程序包管理器控制台窗口,在提示符 PM> 后输入

Enable-Migrations -ContextTypeName MvcMovie.Models.MovieDBContext

其中MvcMovie.Models.MovieDBContext代表的是"命名空间.数据库上下文"

其中MvcMovie.Models.MovieDBContext代表的是"命名空间.数据库上下文"
回车执行。

执行完毕后,在解决方案资源管理器中会自动创建一个Migrations文件夹,它将储存我们的变更记录
在这里插入图片描述

在Model中添加Rating字段

现在可以修改数据库了,在MovieText中新增属性Rating
在这里插入图片描述

在Migrations文件夹中添加此次更改的记录

在程序包管理器控制台窗口,在提示符 PM> 后输入

add-migration name

使用,其中name是记录的名字,最后能够与变更内容有关。

在这里插入图片描述

回车执行。

执行完毕后,在Migrations文件夹中会添加相应的变更记录。以时间戳开头,name结尾。
在这里插入图片描述

将变更保存到数据库

在程序包管理器控制台窗口,在提示符 PM> 后输入

update-database

在这里插入图片描述

回车执行。

执行完毕后即可在数据库中查看是否修改成功。

执行前:
在这里插入图片描述
执行后:
在这里插入图片描述

End

附录

Migrations文件夹中Configuration.cs文件的Seed方法在这里插入图片描述

该方法是执行update-database时对数据进行的修改

在Seed中使用context.Movies.AddOrUpdate()方法

context.Movies.AddOrUpdate(i => i.Title,
            new MovieText
            {
                //数据库已有该记录(Title一样)
                //将数据库中的记录修改为该记录
                Title = "123",
                ReleaseDate = DateTime.Parse("1989-1-11"),
                Genre = "A",
                Price = 123,
                Rating = "QWE",         //将Title为123的记录的Rating修改为QWE
            },
            new MovieText
            {
                //数据库没有该记录
                //在数据库中新增该记录
                Title = "123123123123123",
                ReleaseDate = DateTime.Parse("1989-1-11"),
                Genre = "Romantic Comedy",
            });

代码如图
在这里插入图片描述


按之前的方法添加Rating字段,然后在Seed函数中添加上述代码。

运行结果

修改前:
在这里插入图片描述

修改后:
在这里插入图片描述
End

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值