第一次创建迁移:
在程序包管理器控制台中,执行命令:Enable-Migrations(默认项目一定要执行EF所在的项目,如下图)
(PS:如果对于一个已经存在的数据使用迁移命令的时候,执行方法Add-Migration InitialCreate -IgnoreChanges。IgnoreChanges 标识用于确保这次迁移不会做任何事。执行它会在数据库中创建migrations 表,migrations 表是一个对数据库迁移之前的快照。)
执行结果如下图,项目中多了一个文件夹《Migrations》:
创建迁移命名(UPDATE)
在程序包管理器控制台中,执行命令:Add-Migration,执行结果如下图,多出一个文件。
执行迁移
在程序包管理器控制台中,执行命令:Update-Database -Verbose,Verbose为可选项,不填时,执行最后一个迁移命令。完成迁移
----------------------------------------------------------------------------我只是一个无脑的分隔符---------------------------------------------------------------------
下图为完整的程序包管理器控制台中的执行命令与输出:
-------------------------------------------------------------------------我只是一个无脑的分隔符--------------------------------------------------------------------
每次迁移太累,所以有一个自动迁移的命令写到WEB项目中的global.asax中
1、修改《Migrations》下的文件Configuration,将类的定义《internal》修改为《public》
2、在启动项目中的global.asax中的《Application_Start》中添加添加代码
/*执行CODEFIRST的自动迁移*/
Database.SetInitializer<ModelCodeFirst>(new MigrateDatabaseToLatestVersion<ModelCodeFirst, CXZD.DataModel.Migrations.Configuration>());
var dbMigrator = new DbMigrator(new CXZD.DataModel.Migrations.Configuration());
dbMigrator.Update();
关于使用migrate.exe,命令行进行迁移
文章来源参考:https://www.cnblogs.com/fzrain/p/5583832.html
首先复制migrate.exe至<项目文件夹>\bin文件夹。(在使用 NuGet 安装实体框架时,migrate.exe 位于下载包的 tools 文件夹中。在 <项目文件夹>\packages\EntityFramework.<版本>\tools 中)
执行以下命令(从指定WEBCONFIG中读数据库连接,迁移DLL中的实例,\force 强制执行)
Migrate.exe <你的上下文所在的程序集>.dll /startupConfigurationFile="..\web.config" \force