1.启用迁移
- 在Package Manager Console中运行Enable-Migrations命令
此命令已将Migrations文件夹添加到我们的项目中,此新文件夹包含两个文件:
- Configuration.cs(配置类) : 此类允许您配置迁移对您的上下文的行为
- InitialCreate(初始创建迁移):这种迁移是因为在启用迁移之前,已经有Code First为我们创建了一个数据库。此支架迁移中的代码表示已在数据库中创建的对象。
2.生成和运行迁移
代码优先迁移有两个主要的命令,你将会变得熟悉。
(1)根据自上次迁移创建以来,对您的模型所做的更改,Add-Migration将支持下一次迁移
(2)Update-Database将应用任何挂起的迁移到数据库
步骤:
修改model里面的类的属性货方法,然后运行 指令:
- Add-Migration + 迁移名称
- Update-Database 将应用任何挂起的迁移到数据库
3.自定义迁移
先Add-Migration 迁移名称
然后修改
最后Update-Database
4.数据运动/自定义SQL
实例:
namespace MigrationsDemo.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class AddPostAbstract : DbMigration
{
public override void Up()
{
AddColumn("dbo.Posts", "Abstract", c => c.String());
Sql("UPDATE dbo.Posts SET Abstract = LEFT(Content, 100) WHERE Abstract IS NULL");
}
public override void Down()
{
DropColumn("dbo.Posts", "Abstract");
}
}
}
5.迁移到特定版本(包括降级)
Update-Database -TargetMigration:指定迁移的名称
例如:
Update-Database -TargetMigration:AddBlogUrl
6.获取SQL脚本
Update-Database -Script -SourceMigration: $InitialDatabase -TargetMigration: AddPostAbstract(指定的数据迁移名称)
7.自动升级应用程序启动(MigrateDatabaseToLatestVersion Initializer)
如果您正在部署应用程序,则可能希望在应用程序启动时自动升级数据库(通过应用任何挂起的迁移)。您可以通过注册MigrateDatabaseToLatestVersion数据库初始化程序来执行此操作。数据库初始化程序只包含一些用于确保数据库设置正确的逻辑。该逻辑首次在应用程序进程(AppDomain)中使用上下文时运行。
我们可以更新Program.cs文件,如下所示,在使用上下文(第14行)之前,为BlogContext设置MigrateDatabaseToLatestVersion初始值。请注意,您还需要为System.Data.Entity命名空间添加一个using语句(第5行)。
当我们创建这个初始化器的一个实例时,我们需要指定上下文类型(BlogContext )和迁移配置(配置) - 迁移配置是当我们启用Migrations时添加到Migrations文件夹的类。
Database.SetInitializer(new MigrateDatabaseToLatestVersion ());