自动迁移Azure表中的模型.Net CORE

问题描述 投票:0回答:2

我正在使用Entity Framework .Net CORE 2.2作为我的数据库模型和我正在使用的代码

public void Configure(IApplicationBuilder app, IHostingEnvironment env, MyContextModel MyContext) {
[snipped for clarity]
MyContext.Database.Migrate();
}

操作任何迁移到数据库中。它在本地工作正常,根据需要运行任何更改。如果我将项目发布到Azure,所有内容都可以构建并上传,但是当网站启动时,我会收到消息

"An error occurred while starting the application."

在浏览器窗口中,表格保持不变。我已经删除并重新发布没有MyContext.Database.Migrate();并且网站开始正常,所以我确定这与导致问题的自动迁移有关。我用Google搜索并尝试将线放在DbInitializer和其他各个地方,没有运气。

我已经检查了Cloud Explorer并且我已登录,因此没有权限问题。

任何想法我缺少什么或如何(以及如何)我应该阅读一些Azure日志?

azure entity-framework-core
2个回答
0
投票

这种方法(MyContext.Database.Migrate();)并不适合所有人。虽然它对于具有本地数据库的应用程序非常有用,但大多数应用程序都需要更强大的部署策略,如生成SQL脚本。

在azure上部署时,可以在Startup.cs的Configure方法中添加以下代码

using (var scope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
    scope.ServiceProvider.GetRequiredService<ApplicationDbContext>().Database.Migrate();
}

有关更多详细信息,请参阅此SO thread


0
投票

显然没有办法在Entity Framework CORE中运行迁移。直到几个月前,在Visual Studio中发布的选项有一个“执行迁移”复选框,但现在已经消失了。

你可以尝试跑步

dotnet ef database update

或者一些针对服务器的类似脚本,但这带来了太多错误。所以我试着生成SQL脚本来运行

dotnet ef migrations script

各种开关和诸如此类的东西,但带来了不同的错误。最终我发现了这个。

Script-Migration -from 20190306131332_migration1 -o fileName.sql

它为我成功生成SQL以手动对数据库运行。

-from 

是最后一次迁移,所以如果我想获得自migration1以来的所有更改(即migration2,migration3等),migration1是-from标准

这将在filename.sql文件所在的根目录中创建一个名为.sln的文件。

© www.soinside.com 2019 - 2024. All rights reserved.