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

时间:2015-07-04 04:44:16

标签: c# asp.net-mvc entity-framework asp.net-core-mvc entity-framework-core

我使用最新的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>());

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

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

在EF7中,您无法再自动生成迁移(当前数据库结构与实体定义之间的差异)。必须使用“迁移添加”命令在命令行完成。

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

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

  1. 修改实体定义
  2. 运行“迁移添加”命令
  3. 启动您的应用*

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