【问题标题】:Migrating model in an Azure table automatically .Net CORE自动迁移 Azure 表中的模型.Net CORE
【发布时间】:2019-08-08 22:22:17
【问题描述】:

我将 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(); 的情况下重新发布,并且该站点可以正常启动,因此我确定这与导致问题的自动迁移有关。我用谷歌搜索并尝试将线路放在DbInitializer 和其他各种地方,但没有运气。

我已经检查过 Cloud Explorer 并且我已经登录,所以没有权限问题。

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

【问题讨论】:

    标签: azure entity-framework-core


    【解决方案1】:

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

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

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

    更多详情可以参考这个SO thread

    【讨论】:

    • 这些行在尝试查看站点时导致浏览器中出现以下错误消息“启动应用程序时发生错误。.NET Core 4.6.27317.07 X64 v4.0.0.0 | Microsoft.AspNetCore。托管版本 2.2.0-rtm-35687 | Microsoft Windows 10.0.14393|"当我尝试运行该网站时。
    • 你可以试试这个SO thread
    【解决方案2】:

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

    你可以尝试运行

    dotnet ef database update
    

    或针对服务器的一些类似脚本,但这会带回太多错误,无法提及。因此,我尝试生成 SQL 脚本以按照

    的方式运行
    dotnet ef migrations script
    

    使用各种开关和诸如此类的东西,但这会带来不同的错误。最终我找到了这个。

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

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

    -from 
    

    是最后一次迁移运行,所以如果我想获取自迁移 1 以来的所有更改(即迁移 2、迁移 3 等),迁移 1 是-from 标准

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

    【讨论】:

      猜你喜欢
      • 2020-07-12
      • 1970-01-01
      • 2019-10-08
      • 2018-04-15
      • 2023-03-21
      • 2011-04-30
      • 1970-01-01
      • 2021-02-26
      • 2018-08-18
      相关资源
      最近更新 更多