EntityFramework数据迁移(笔记)

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 ()); 
 
原文地址:https://www.cnblogs.com/nzgbk/p/7427543.html