模型更改后更新数据库 - 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 中连接它,这样当您的应用程序首次启动时,它将确保您的数据库已与您的应用程序的当前版本保持同步。
因此您的开发工作流程可以是:
- 修改实体定义
- 运行 "migrations add" 命令
启动您的应用程序*
- 上面的数字 3 假定您已经在 Startup.否则,您还必须手动执行 "database update" 命令。
我使用最新的 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 中连接它,这样当您的应用程序首次启动时,它将确保您的数据库已与您的应用程序的当前版本保持同步。
因此您的开发工作流程可以是:
- 修改实体定义
- 运行 "migrations add" 命令
启动您的应用程序*
- 上面的数字 3 假定您已经在 Startup.否则,您还必须手动执行 "database update" 命令。