迁移模型在Azure表中自动完成.Net CORE

33 浏览
0 Comments

迁移模型在Azure表中自动完成.Net CORE

我使用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日志?

0
0 Comments

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

在使用Azure表进行模型迁移时,有时会出现问题。这个问题的主要原因是使用了错误的方法来迁移模型。虽然MyContext.Database.Migrate();这种方法对于拥有本地数据库的应用程序是很好的,但大多数应用程序需要更强大的部署策略,比如生成SQL脚本。

为了解决这个问题,可以在Startup.cs的Configure方法中添加以下代码:

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

这段代码的作用是在部署到Azure时自动迁移数据库模型。更多详细信息可以参考这个SO thread

然而,如果在尝试查看网站时出现以下错误信息:"An error occurred while starting the application. .NET Core 4.6.27317.07 X64 v4.0.0.0 | Microsoft.AspNetCore.Hosting version 2.2.0-rtm-35687 | Microsoft Windows 10.0.14393|",则可能是由于这段代码引起的。

为了解决这个问题,可以参考这个SO thread

0
0 Comments

在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的条件。

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

0