我在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;"
}
}
我认为如果您运行了 Azure 应用服务,这会对您有所帮助。我一直在寻找解决这个问题的方法。我能够使用 Visual Studio 2019 Community Edition 中的服务器资源管理器解决该问题。
开始之前,您需要部署您的应用程序而不迁移,在发布配置文件设置中取消选择实体框架迁移,然后发布您的 Azure 配置文件。
.db
文件好吧,在因缺乏此错误的在线帮助而感到沮丧之后,我终于找到了调试此错误的正确方法。
首先,尝试 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“发布”命令无法解析并重新复制该输出,而是因神秘错误而终止。)
无论如何,这应该是你需要的救星!