我使用最新的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>());
答案 0 :(得分:5)
您必须从命令行手动运行EF7迁移,或者从代码调用Database.Migrate,EF7中没有任何自动化(经过深思熟虑的决定),并且在更改模型后,创建新的迁移
答案 1 :(得分:2)
在创建迁移和更新数据库结构的过程之间似乎存在一些混淆。
在EF7中,您无法再自动生成迁移(当前数据库结构与实体定义之间的差异)。必须使用“迁移添加”命令在命令行完成。
然而,更新数据库的结构仍然可以通过代码完成。这是使用dbContext.Database.Migrate()方法完成的。您可以在启动时将其连接起来,这样当您的应用程序首次启动时,它将确保您的数据库已使用当前版本的应用程序更新。
因此,您的开发工作流程可以是:
启动您的应用*