EFCore数据库迁移命令整理
前言因为现在用.net core 开发新项目,过程中需要经常涉及到数据命令的迁移,今天分别整EFCore 的两种迁移数据库的方式
1 程序包管理器控制台 , Package Manager Console(PMC)
-如果你用visual studio 开发建议使用PMC迁移方式,该方式是同时支持efcore和原先的ef 迁移的
2 命令行工具 ,Command line interface (CLI)
-该方式适用于跨平台开发的时候进行迁移数据库的,也就是可脱离visual studio,比如你用vs code,或直接打开cmd控制台进行操作
1.下面先列出两种方式对比,然后再分用vs 和vscode分别详细说明
迁移命令描述 | CLI命令 | PMC命令 |
---|---|---|
创建迁移:migrationname为迁移名称 | dotnet ef migrations add migrationName | add-migration migrationName |
移除迁移(删除最近的一次迁移) | dotnet ef migrations remove | remove-migration |
应用所有的迁移(使迁移文件应用到数据库) | dotnet ef database update | update-database |
指定版本进行迁移 | dotnet ef database update migrationName | update-database migrationName |
生成对应版本的脚本 | dotnet ef migrations script | Script-Migration |
查看迁移列表 | dotnet ef migrations list | |
查看数据库上下文信息 | dotnet ef dbcontext info |
【EFCore数据库迁移命令整理】
2.程序包管理器控制台 , Package Manager Console(PMC)
打开visual studio 程序包管理控制台,首先要善于使用pmc的帮助,输入get-help 查看帮助信息,根据提示我们可以输入 get-help about_entityframework获取帮助信息,输入命令后我们应该能看到一只霸气的野马头像 ,头像下面就是efcore的相关帮助文档了 ,入下图
文章图片
- add-migration这个命令一般都不会有啥问题输入命令回车在输入迁移名称就ok
- remove-migration 这个也是如果想删除最后一次迁移 直接执行就好
- update-database 第一步添加一个迁移文件成功后,可以用该命令直接更新到数据库,默认是所有迁移,如果想指定迁移直接加上迁移文件的名字就好了,如:update-database migrationName,也相当于版本回滚操,比如有版本1,2,3 此时我想回滚到版本1就直接 update-database 1,此时数据库中已经更新到1版本了,然后在两次remove-migration把2和3的迁移文件删除就好了
- Script-Migration这个命令用于生成迁移文件对应的sql语句的,跟之前的ef貌似有些不一样,该命令如果不加任何参数 是默认生成所有迁移文件对应的sql语句,当然也参照格式指定餐宿
Script-Migration -From migrationName1 -To migrationName2-Context ContextName
有意思的是 ,它不会生成from对应的迁移文件的sql,也就是说想上面这么写只会生生成migrationName2的sql语句,那么问题来了 ,需要生成第一个迁移文件的sql怎么办?经过查看官方文档,需要指定from参数为0,也就是Script-Migration -From 0
- 最后温馨提示 使用 Get-Help
即可获取对应命令文档,如 get-help update-databa
3 跨平台命令行工具 ,Command line interface (CLI) 打开vscode命令终端 输入dotnet ef 后也能看到一直霸气野马的头像,也将列出相关帮助信息
文章图片
1.dotnet ef migrations add生成一条迁移
2.dotnet ef migrations remove删除最新一次迁移
3. dotnet efdatabaseupdate 生成迁移到数据库,跟上面pmc命令类似 后面加指定的迁移作为参数可以进行版本的回滚
4.dotnet ef migrations script也跟pmc类似如果没有任何参数的话默认是生成所有sql脚本,但是参数格式略有不同如下:dotnet ef migrations script migrationName1migrationName2 ; 是像这样直接跟迁移名称的也就是生成migrationName1 到migrationName2 的sql脚本
相关链接:
官方文档:https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/
efcore相对之前ef的一些变更:https://msdn.microsoft.com/magazine/mt614250
efcore反向工程dbfirst:https://code.msdn.microsoft.com/How-to-using-Entity-1464feea
本文永久更新地址:http://siyouku.cn/article/6871.html
asp.net core 开发框架:https://github.com/2014fighting/CodeFrame.Web.git
转载于:https://www.cnblogs.com/fighting2014/p/8460954.html
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- 数据库设计与优化
- 数据库总结语句
- MySql数据库备份与恢复
- 数据库|SQL行转列方式优化查询性能实践
- MySQL数据库的基本操作
- springboot整合数据库连接池-->druid
- Android|Android sqlite3数据库入门系列
- Python3|Python3 MySQL 数据库连接
- 达梦数据库|DM8表空间备份恢复