EntityFramework数据迁移「建议收藏」

EntityFramework数据迁移「建议收藏」1.启用迁移 在Package Manager Console中运行Enable-Migrations命令 此命令已将Migrations文件夹添加到我们的项目中,此新文件夹包含两个文件: Conf…

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");
            }
        }
    }

代码100分

 
 
5.迁移到特定版本(包括降级)
Update-Database -TargetMigration:指定迁移的名称
例如:
Update-Database -TargetMigration:AddBlogUrl
 
6.获取SQL脚本
Update-Database -Script -SourceMigration: $InitialDatabase -TargetMigration: AddPostAbstract(指定的数据迁移名称)
7.自动升级应用程序启动(MigrateDatabaseToLatestVersion Initializer)
代码100分如果您正在部署应用程序,则可能希望在应用程序启动时自动升级数据库(通过应用任何挂起的迁移)。您可以通过注册MigrateDatabaseToLatestVersion数据库初始化程序来执行此操作。数据库初始化程序只包含一些用于确保数据库设置正确的逻辑。该逻辑首次在应用程序进程(AppDomain)中使用上下文时运行。 
我们可以更新Program.cs文件,如下所示,在使用上下文(第14行)之前,为BlogContext设置MigrateDatabaseToLatestVersion初始值。请注意,您还需要为System.Data.Entity命名空间添加一个using语句(第5行)。 
当我们创建这个初始化器的一个实例时,我们需要指定上下文类型(BlogContext )和迁移配置(配置) - 迁移配置是当我们启用Migrations时添加到Migrations文件夹的类。 
Database.SetInitializer(new MigrateDatabaseToLatestVersion ()); 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7214.html

(0)
上一篇 2023-03-24 19:30
下一篇 2023-03-24

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注