使用 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代表的是"命名空间.数据库上下文"
回车执行。
执行完毕后,在解决方案资源管理器中会自动创建一个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