无法在 VS 2017 .NET Core 上为 Entity Framework 启用迁移

Can't enable migrations for Entity Framework on VS 2017 .NET Core

我刚刚安装了 VS 2017 并创建了一个新的 Core 项目。在其中,我添加了:

我还创建了一个名为 Models 的文件夹,其中包含 class。然后,我转到包管理器控制台并执行 enable-migrations 这样 VS 就会创建我需要的文件。但是,我收到的不是所需的文件,而是以下错误。

The term 'enable-migration' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

我在这里应该做什么?

我似乎不走运谷歌搜索。这是一个非常不寻常的组合(Core VS17 和 EF),因此几乎没有关于该主题的信息。一些指南谈到手动编辑 package.json 这有点困难,因为 VS 2017 似乎升级了核心,因此 dotnet restore 不会寻找它,而是寻找 xxx.csproj.

综上所述,我很困惑,也不确定如何解决这个问题。

EF Core 不再有 Enable-Migrations 命令。迁移已启用 "by default"。使用 Add-Migration 添加新迁移。

关于包管理器命令的文档is here

我在 Visual Studio 2017 和从 VS 2015 导入的项目中遇到了类似的问题,EF 迁移不再有效。

阅读 GitHub 上的文档后: https://github.com/aspnet/EntityFramework/issues/7031

我通过 Nuget 安装了这个包:

"Microsoft.EntityFrameworkCore"

它造成了多重downloads/installs的级联效应。 安装后,重启VS 2017,一切恢复正常。

两天后,在另一个 Visual Studio 2015 项目中,我遇到了同样的问题,并按照上述步骤解决了它,但随后出现了这个新错误:

"Inheritance security rules violated by type: 'System.Net.Http.WebRequestHandler'. Derived types must either match the security accessibility of the base type or be less accessible."

我通过将项目框架升级到最新的“.NET Framework 4.6.2”解决了这个错误(可怕....但它没有任何进一步的问题)

我在 GitHub 上参考了此文档: https://github.com/dotnet/corefx/issues/11100

我刚刚安装了 Microsoft.EntityFrameworkCore.Tools,然后我尝试执行 enable-migrations 然后我在 VS2017 中收到以下消息:

Enable-Migrations is obsolete. Use Add-Migration to start using Migrations.

希望对您有所帮助。

正如其他人之前提到的,enable migrations 已经过时并且无论如何都处于打开状态,您可以使用 Add-Migration InitialCreate。

我要补充一点,您 不需要 向项目添加更多包,因为它已经在 Microsoft.AspNetCore.All 元包中引用了必要的程序集。

您也可以使用您的控制台(cmd/shell 取决于您的 OS)而不是 PM 电源 shell 控制台。为此,您需要添加对 dotnet 工具的引用:编辑您的项目文件(右键单击它并 select 'edit .csproj' - 并在 ItemGroup 中添加以下引用:

<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0"></DotNetCliToolReference>

然后在控制台中输入 dotnet ef migrations add InitialCreate

Add Migration in .NET Core

.NET Core CLI

已解决

  1. 右键单击项目,然后单击选项:管理 NuGet 包裹;在浏览中,寻找 EntityFramework 插件,安装它, 然后重启 Visual Studio.
  2. 创建一个继承自 DbContext 的 MyDbContext class。
  3. 在工具> NuGet 包管理器> 包管理器控制台
  4. 启用迁移
  5. 添加迁移 InitialModel

转到工具->NuGet 包管理器->包管理器控制台

install-package EntityFramework

然后

enable-migrations

此命令 运行s 用于项目的整个生命周期意味着您只需在项目中编写一次 但是,如果我们更改模型或添加另一个 class 或进行任何更改,我们可以使用此命令

add-migration migrationNameTest

'migrationNameTest' 是您要分配给它的迁移名称 然而 运行 迁移 转到包管理器和 运行

update-database
  1. 运行 在程序包管理器控制台中执行以下命令。
  2. 运行 visual studio 作为管理员。

Install-Package EntityFramework -IncludePrerelease

我的问题解决了。