模型更改后更新数据库 - Entity Framework 7

Update Database after Model Changes - Entity Framework 7

我使用最新的 ASP.NET5 MVC 6 Entity Framework 7 创建了一个应用程序,并使用

设置迁移
dnx . ef migration add Initial
dnx . ef migration apply

这有效,但是当我对模型进行更改时,数据库没有更新。当我 运行 程序时,我希望在模型更改后自动更新数据库。

我的研究只指出了似乎不适合 Entity Framework 7.

的旧信息

我当前的代码:

 public ApplicationDbContext(): base()
   {

        if (!_created)
        {

             Database.AsRelational().ApplyMigrations();
             _created = true;         
        }
  }

有人能指出我正确的方向吗?

我相信它曾经像这样工作:

Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>());

您必须从命令行使用 EF7 手动 运行 迁移,或从代码调用 Database.Migrate,EF7 中没有任何自动功能(深思熟虑的决定),并且在更改模型后,创建一个新迁移

创建迁移和更新数据库结构的过程之间似乎有些混淆。

在 EF7 中,您无法再自动生成迁移(当前数据库结构与实体定义之间的增量)。这必须使用 "migrations add" 命令在命令行中完成。

但是,更新数据库的结构仍然可以通过代码完成。这是使用 dbContext.Database.Migrate() 方法完成的。您可以在您的 Startup 中连接它,这样当您的应用程序首次启动时,它将确保您的数据库已与您的应用程序的当前版本保持同步。

因此您的开发工作流程可以是:

  1. 修改实体定义
  2. 运行 "migrations add" 命令
  3. 启动您的应用程序*

    • 上面的数字 3 假定您已经在 Startup.否则,您还必须手动执行 "database update" 命令。