由于 dotnet ef dbcontext --json 失败,无法在 Visual Studio 2019 中列出实体框架迁移
Posted
技术标签:
【中文标题】由于 dotnet ef dbcontext --json 失败,无法在 Visual Studio 2019 中列出实体框架迁移【英文标题】:Cannot list Entity Framework Migrations in Visual Studio 2019 due to dotnet ef dbcontext --json failure 【发布时间】:2019-12-13 10:41:12 【问题描述】:我有一个使用 .NET Core 3.0 的 ASP.NET Core 3.0 项目。我最近将 VS 2019 升级到了 16.4.1 版本。
我使用 Visual Studio 中的 Web Publish 在各种环境中部署应用程序,但升级后由于 EF 迁移而失败(尝试查找 db 上下文失败):
dotnet ef dbcontext --json 失败
运行“dotnet tool restore”以使“dotnet-ef”命令可用。
我试图了解问题所在。
dotnet tool restore
找不到清单文件。对于搜索到的位置列表,请指定 工具名称前的“-d”选项。未恢复任何工具。
dotnet tool install --global dotnet-ef
工具 'dotnet-ef' 已安装。
dotnet tool list
包 ID 版本命令清单
(此列表中没有项目)
dotnet-ef --version
Entity Framework Core .NET 命令行工具 3.1.0
dotnet --version
3.1.100
是否需要升级才能将所有内容升级到 3.1?如果可能的话,我想推迟这个(我必须在多个环境中执行此操作,并且安排在稍后的时间)。
注意:我还有 Visual Studio 2017,并且在配置发布配置文件时正确发现了实体框架迁移上下文。
问题:如何解决Cannot list Entity Framework Migrations in Visual Studio 2019 due to dotnet ef dbcontext --json failure?
【问题讨论】:
【参考方案1】:我遇到了同样的问题(在更新了 Visual Studio 2019 之后),在我的电脑上存在这个问题,但在另一台电脑上没有。这些文件都是相等的(通过 git 检查),VS2019 在某处缓存了一些东西,这很糟糕。
1 检查默认连接字符串是否正常。
2 检查是否安装了 dotnet ef。在核心 3.1 中您必须安装:dotnet tool install -g dotnet-ef
3 关闭VS,删除文件夹<yourproject>/Properties
(如果需要可以备份),打开VS,清理解决方案并再次导入发布文件。
【讨论】:
【参考方案2】:运行
dotnet tool uninstall --global dotnet-ef
运行
dotnet tool install --global dotnet-ef
对于 Linux 和 macOS,在 shell 的配置中添加一行:
bash/zsh: (nano ./zshrc
)
export PATH="$PATH:$HOME/.dotnet/tools/"
csh/tcsh:
set path = ($path $HOME/.dotnet/tools/)
来源:https://***.com/a/56876020/9324707
【讨论】:
【参考方案3】:我遇到了同样的问题,但不知道我必须 cd 进入“服务器”项目,然后运行 dotnet tool restore
。这为我解决了。
【讨论】:
【参考方案4】:dotnet ef 工具不再是 .NET Core SDK 的一部分 此更改允许我们将 dotnet ef 作为常规 .NET CLI 工具发布,该工具可以作为全局或本地工具安装。例如,为了能够管理迁移或构建 DbContext,请将 dotnet ef 作为全局工具安装,键入以下命令:
$ dotnet tool install --global dotnet-ef --version 3.0.0-preview4.19216.3 有关详细信息,请参阅此重大更改的详细信息。
【讨论】:
【参考方案5】:我想我已经解决了。我缺少 Microsoft.EntityFrameworkCore.Design。
-
使用 NuGet 安装了 Microsoft.EntityFrameworkCore.Design 3.0.0
跑dotnet tool restore
这次成功了
dotnet 工具恢复
工具“dotnet-ef”(版本“3.1.0”)已恢复。可用命令: dotnet-ef
【讨论】:
我的症状完全相同,但遗憾的是这个解决方案对我不起作用。 @PhilipStratford 试试我的答案。以上是关于由于 dotnet ef dbcontext --json 失败,无法在 Visual Studio 2019 中列出实体框架迁移的主要内容,如果未能解决你的问题,请参考以下文章
dotnet-ef dbcontext 脚手架在与 SQLite 一起使用时生成 HasColumnType 包括长度与 HasMaxLength
dotnet ef 迁移 name dotnet ef 数据库更新