使用SQLite数据库在Azure上发布时出现“Entity framework SQL Script generation failed”错误

yws3nbqq  于 2023-10-23  发布在  SQLite
关注(0)|答案(3)|浏览(189)

我在MSDN和SF上发现了很多类似的问题,但没有一个对我有帮助,或者我不理解。尝试在Azure上发布我的应用时,出现以下错误。
实体框架SQL脚本生成失败
我在这里使用SQLite数据库。值得注意的是,在我的本地机器上一切正常。应用程序运行良好。
我已经在包管理器控制台上运行了这些命令-Add-Migration -InitialUpdate-Database

发布设置

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

appsetting.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "EmployeeDB": "Data Source=employeedb.db;"
  }
}
dohp0rv5

dohp0rv51#

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

由于某种原因,它无法自行运行,我的迁移可能不同步,但我在上面的问题中得到了这个奇怪的错误消息。
希望这对将来遇到这个问题的人有所帮助。

iaqfqrcu

iaqfqrcu2#

我认为这可以帮助你,如果你有一个Azure应用程序服务运行。我一直在寻找这么长时间来解决这个问题。我能够使用Visual Studio 2019社区版的服务器资源管理器解决这个问题。
在开始之前,您需要部署应用 * 而不 * 迁移,在发布配置文件设置上设置实体框架迁移,然后发布Azure配置文件。
1.在Visual Studio Community 2019上,在服务器资源管理器-> Azure下登录Azure帐户
1.选择App Service并双击Open Cloud Explorer
1.将出现一个新的选项卡窗口,您需要找到您的Azure订阅
1.在Azure订阅中,您将看到所有应用服务
1.在一个文件夹中,转到Files文件夹,您将看到所有已部署的文件
1.右键单击Files文件夹,然后选择Upload File
1.在此窗口中上传.db文件

bt1cpqcv

bt1cpqcv3#

好吧,在对这个错误缺乏在线帮助感到沮丧之后,我终于找到了一个正确的方法来调试这个错误。
首先,尝试Western Reserve Care Solutions的答案。这可能是一个快速修复你。
如果这不起作用,转到“输出”窗口。在“Entity framework SQL Script generation failed”(实体框架SQL脚本生成失败)错误上方的底部附近,您应该看到“Executing command”(执行命令)和类似这样的内容:

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尝试执行的命令。如果有任何错误,它会在窗口中显示出来!
在我的特殊情况下,它原来是我的Web服务器的启动代码中的运行时错误。显然,“dotnet ef”需要运行一部分代码来解决迁移问题。我以为我的代码已经测试过了,可以工作了,但是发生的事情是我按照我的发布过程从“安装”配置文件更改为“暂存”,并且错误是特定于暂存配置文件的。从命令提示符运行KEYCOMMAND立即突出显示错误,显示完整的调用堆栈。(可惜VS 2022“Publish”命令不会解析和重新复制该输出,相反,它只会死于神秘的错误。
不管怎么说,这应该是你需要的救生圈!

相关问题