【问题标题】:How to enable migrations through code only without using Package manager console如何在不使用包管理器控制台的情况下仅通过代码启用迁移
【发布时间】:2016-11-06 05:44:55
【问题描述】:

我首先在我的应用程序中使用实体框架代码。但是在更新模型后使用它时,每次我必须启用自动迁移并使用包管理器控制台运行update-database。有没有人对此有解决方案,我们是否可以在不使用包管理器控制台的情况下自动化这个和update-database

【问题讨论】:

    标签: entity-framework ef-code-first entity-framework-6 entity-framework-migrations


    【解决方案1】:

    您只需运行一次Enable-Migrations,即可生成Configuration.cs 类和Initial 迁移。之后,无论何时更改模型,都必须通过运行Add-Migration 生成新的迁移,并且您还必须运行Update-Database 将迁移应用到您的数据库,但您不需要再次运行Enable-Migrations .

    如果您想自动化该过程,您可以通过在Configuration 类的构造函数中设置AutomaticMigrationsEnabled = true 来启用迁移的自动生成,并在DbContext 中使用MigrateDatabaseToLatestVersion 数据库初始化程序。这将允许您只更改您的模型代码,而不必使用包管理器控制台做任何事情,不需要 Add-MigrationUpdate-Database。您仍然需要在开始时运行一次Enable-Migrations,在您创建项目之后,以生成Initial 迁移。

    无论如何,自动迁移可能会导致一些问题,我真的不建议您使用它们。因此,每当您的模型发生变化时,我都会继续执行手动 Add-Migration 命令。如果您使用 MigrateDatabaseToLatestVersion 数据库初始化程序,您仍然可以跳过执行 Update-Database

    另一种方法是使用DbMigrator 从您的代码中运行与Update-Database 等效的操作(但如果您使用MigrateDatabaseToLatestVersion 数据库初始化程序,则不需要这样做):

    var migrator = new DbMigrator(new DbMigrationsConfiguration());
    migrator.Update();
    

    【讨论】:

      猜你喜欢
      • 2013-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 2020-08-05
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      相关资源
      最近更新 更多