• 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 ()); 
     
  • 相关阅读:
    关于Linux联网的问题
    MapD的数据导出与扩容(利用现有的表)
    系统重启后,MapD报错Thrift的连接被拒绝
    关于Linux系统只读(Ubuntu16.4.1)
    javaBean的依赖注入中构造注入和依赖注入的区别
    Struts2开发中遇到的坑。。。
    通过配置文件设置定时任务,以及时间的选择
    微信小程序开发的movable开发的坑
    spring基础概念
    Hibernate的三种查询方式
  • 原文地址:https://www.cnblogs.com/nzgbk/p/7427543.html
Copyright © 2020-2023  润新知