对于DB迁移,我使用以下CLI:
dotnet ef migrations add <Name-of-Migration>dotnet ef database update但是,我正在寻找一种自动发生这种情况的方法:当检测到模型中的更改时。
到目前为止,通过在Startup.cs中执行以下操作,我已经能够消除步骤2:
private void SetupDatabase(IApplicationBuilder app)
{
using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
var context = serviceScope.ServiceProvider.GetRequiredService<ApplicationDbContext>();
//Migate any pending changes:
context.Database.Migrate();
}
}这将迁移in:dotnet ef migrations add <Name-of-Migration>创建的任何挂起的更改,但它不会为模型中的任何更改添加迁移。如何使这个migrations add自动化
发布于 2017-07-20 01:00:00
更新的:从代码自动生成迁移的第一步是可能的,这是我个人不同意的设计决策。它在您的目标EF7中仍然是不可能的,正如我最初所说的(它似乎已经从EF7中移除了在这篇文章里,也被Ivan在评论中提到的微软EF团队成员在这篇博客文章上删除了),但是在马丁回复之后在EF6中进行了测试。第二步可以自动完成,因为你已经知道了,所以我不会再重复了。
第一步的步骤如下(在ASP.net MVC Web应用程序和EF6中):
Enable-Migrations –EnableAutomaticMigrations。如果您的应用程序有单个DB上下文,那么它也在其中应用了更改。public String TestField { get; set; }Add-Migration命令(希望,正如我在后面的回答中指出的那样),您只需运行Update-Database,并且应该更新DB,允许应用程序正常运行。为什么自动模型更改监视以自动生成和更新数据库()可能会适得其反,有时(在我看来是从MSDN页面那里):
以上可能并不适用于每个人,但我认为应该分享为什么我同意不将迁移到DB的生成和应用程序自动化的设计决策。
每个考虑启用自动迁移的人都应该阅读MSDN页面以获得更多的示例和缺点。
发布于 2017-07-25 07:51:34
实体框架4.3引入了自动迁移。
虽然我同意哈桑的回答,说这可能是非常棘手的,但这一选择实际上是存在的。
这是一份简短的简历:
启用-迁移-EnableAutomaticMigration:$true
就这样,改变你的模式,看看变化.
我仍然不确定我是否会使用它,因为我希望我的数据库在我说的时候改变.
https://stackoverflow.com/questions/45133532
复制相似问题