使用 SQLite 数据库在 azure 上发布时出现“实体框架 SQL 脚本生成失败”错误

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

我在MSDN和SF上发现了很多与我的问题类似的问题,但没有一个对我有帮助,或者可能是我不理解它们。当我尝试在 Azure 上发布我的应用程序时,出现以下错误。

实体框架 SQL 脚本生成失败

我这里使用的是SQLite数据库。需要注意的是,在我的本地机器上一切正常。该应用程序运行良好。

我已经在包管理器控制台上运行了这些命令 -

Add-Migration -Initial
Update-Database

发布设置

在这张照片中,我在 EF 迁移字段中输入“Initial”作为连接字符串。结果是一样的。我猜可能是这里造成的问题。

appsetting.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "EmployeeDB": "Data Source=employeedb.db;"
  }
}
asp.net azure entity-framework sqlite visual-studio-2019
3个回答
5
投票

对我来说,当我选中发布菜单中实体框架迁移选项下的在发布时应用此迁移复选框时,此错误消失了。

由于某种原因,它无法自行运行,我的迁移可能不同步,但我在上面的问题中收到了这个奇怪的错误消息。

希望这对将来遇到此问题的任何人有所帮助。


1
投票

我认为如果您运行了 Azure 应用服务,这会对您有所帮助。我一直在寻找解决这个问题的方法。我能够使用 Visual Studio 2019 Community Edition 中的服务器资源管理器解决该问题。

开始之前,您需要部署您的应用程序而不迁移,在发布配置文件设置中取消选择实体框架迁移,然后发布您的 Azure 配置文件。

  1. 在 Visual Studio Community 2019 上,在 Server Explorer -> Azure
  2. 下登录您的 Azure 帐户
  3. 选择应用服务并双击打开云资源管理器
  4. 出现一个新选项卡窗口,您需要找到您的 Azure 订阅
  5. 在您的 Azure 订阅中,您将看到所有应用服务
  6. 在其中,转到 Files 文件夹,您将看到所有已部署的文件
  7. 右键单击Files文件夹并选择上传文件
  8. 在此窗口上传您的
    .db
    文件

Server Explorer is usually at left toolbar

This where you can find your deployed files


0
投票

好吧,在因缺乏此错误的在线帮助而感到沮丧之后,我终于找到了调试此错误的正确方法。

首先,尝试 Western Reserve Care Solutions 的答案。这对您来说可能是一个快速解决方案。

如果这不起作用,请转到“输出”窗口。在“实体框架 SQL 脚本生成失败”错误上方的底部附近,您应该看到“正在执行命令”和类似这样的内容:

dotnet ef migrations script --no-build --idempotent --configuration Staging --output "C:\dev\ClientName\Select\Select\obj\Staging\net7.0-windows\PubTmp\EFSQLScripts\Select.Data.ApplicationDbContext.sql" --context Select.Data.ApplicationDbContext

这是你解开错误的钥匙!现在转到工具->命令行->开发人员命令提示符。键入“CD Solution_name”以确保您与 *.csproj 位于同一文件夹中(在我的情况下为“CD Select”)。然后复制并粘贴按键命令(来自您的输出窗口的命令)。您基本上是手动运行 Publish 尝试执行的命令。除此之外,如果有任何错误,它会在窗口中显示出来!

在我的特定情况下,事实证明这是我的网络服务器启动代码中的运行时错误。显然,“dotnet ef”需要运行部分代码才能确定迁移。我认为我的代码已经过测试并且可以工作,但发生的情况是,根据我的发布过程,我从“调试”配置文件更改为“暂存”,并且该错误特定于暂存配置文件。从命令提示符运行 KEY COMMAND 会立即突出显示错误,并显示完整的调用堆栈。 (太糟糕了,VS2022“发布”命令无法解析并重新复制该输出,而是因神秘错误而终止。)

无论如何,这应该是你需要的救星!

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