模型更改后更新数据库-实体框架7

本文关键字:实体 框架 数据库 更新 模型 | 更新日期: 2023-09-27 18:01:10

我使用最新的ASP.NET5 MVC 6实体框架7创建了一个应用程序,并使用设置迁移

dnx . ef migration add Initial
dnx . ef migration apply

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

我的研究只向我指出了似乎不适合实体框架7的旧信息。

我当前的代码:

 public ApplicationDbContext(): base()
   {
        if (!_created)
        {
             Database.AsRelational().ApplyMigrations();
             _created = true;         
        }
  }

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

我相信它过去是这样工作的:

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

模型更改后更新数据库-实体框架7

您必须从命令行手动运行EF7迁移,或调用数据库。从代码迁移时,EF7中没有任何automagic功能(这是一个深思熟虑的决定(,在您更改模型后,创建一个新的迁移

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

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

然而,更新数据库的结构仍然可以通过代码来完成。这是使用dbContext.Database.Migrate((方法完成的。你可以在启动时将其连接起来,这样当你的应用程序第一次启动时,它将确保你的数据库与应用程序的当前版本保持同步。

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

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

    • 上面的数字3假设您已经在启动中连接了上面提到的Migrate((调用。否则,您还必须手动执行"数据库更新"命令