EF命令行工具 migrate.exe 进行Code First更新数据库,6.3+使用ef6.exe

使用EF的Code First迁移可以用于从Visual Studio内部更新数据库,但也可通过命令行工具 migrate.exe 进行执行。

如果项目已经更新到服务器,后面的更新数据库分为两种办法,要么把线上数据库备份到本地,然后使用VS迁移,要么使用命令迁移,官方提供了migrate.exe工具,命令如下,但是每次记录一个命令比较麻烦,可以直接写一个bat文件,下次执行就行了

  1. 新建bin.bat文件,复制下面代码到文件

  2. 复制bin.bat和migrate.exe到bin目录下,其中“Test.EntityFramework”为EF层的类库名,根据各自的项目修改为自己项目对应名,双击执行就行了。.

使用migrate.exe(这个一般用EF的项目里面都有的,直接使用类似Everything的搜索工具搜索本地就好了,不提供文件了)

官方文档:

https://learn.microsoft.com/zh-cn/ef/ef6/modeling/code-first/migrations/migrate-exe

@echo offmigrate.exe Test.EntityFramework /startupConfigurationFile="..\\Web.config"pause

EF升级到6.3+的处理方案

EF升级到6.3+的时候官方升级了迁移工具,原来的migrate.exe不能使用,坑了好多人(具体可以看github中各种),改为使用ef6.exe,但是也没有准确的使用文档,只能不断的尝试和网络上找关联的信息,最后测试可以使用的如下(真的是搜索全网都没有,ChatGPT4.0都没用)

ef6.exe文件本地也有,提供下载了

使用方法和migrate.exe类似,命令修改为(“Test.EntityFramework”为EF层的类库名,根据各自的项目修改为自己项目对应名)

@echo offef6.exe database update --assembly "Test.EntityFramework.dll" --config "..\\Web.config"pause

复制bin.bat和ef6.exe文件到bin文件夹下,双击执行bin.bat文件就行了

关联信息

1. 微软文档“使用 migrate.exe”,可以看更多命令信息

https://learn.microsoft.com/zh-cn/ef/ef6/modeling/code-first/migrations/migrate-exe

github中关于该功能修改的讨论

Document ef6.exe and remove doc for migrate.exe #1740

https://github.com/dotnet/EntityFramework.Docs/issues/1740

issues moving from migrate.exe to ef6.exe #1605

https://github.com/dotnet/ef6/issues/1605