由于 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 数据库更新

如何在 EF Core 中实例化 DbContext

dotnet 核心中的 Dbcontext 对象瞬态

ABP Vnext 4.4:统一Ef Core的DbContext/移除EF Core Migrations项目

DotNet Core,没有为此 DbContext 配置数据库提供程序