无法在 VS 2017 .NET Core 上为 Entity Framework 启用迁移
Can't enable migrations for Entity Framework on VS 2017 .NET Core
我刚刚安装了 VS 2017 并创建了一个新的 Core 项目。在其中,我添加了:
- Microsoft.EntityFrameworkCore (1.1.0)
- Microsoft.NETCore.App (1.1.0)
我还创建了一个名为 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
已解决
- 右键单击项目,然后单击选项:管理 NuGet
包裹;在浏览中,寻找 EntityFramework 插件,安装它,
然后重启 Visual Studio.
- 创建一个继承自 DbContext 的 MyDbContext class。
- 在工具> NuGet 包管理器> 包管理器控制台
- 启用迁移
- 添加迁移 InitialModel
转到工具->NuGet 包管理器->包管理器控制台
写
install-package EntityFramework
然后
enable-migrations
此命令 运行s 用于项目的整个生命周期意味着您只需在项目中编写一次
但是,如果我们更改模型或添加另一个 class 或进行任何更改,我们可以使用此命令
add-migration migrationNameTest
'migrationNameTest' 是您要分配给它的迁移名称
然而 运行 迁移
转到包管理器和 运行
update-database
- 运行 在程序包管理器控制台中执行以下命令。
- 运行 visual studio 作为管理员。
Install-Package EntityFramework -IncludePrerelease
我的问题解决了。
我刚刚安装了 VS 2017 并创建了一个新的 Core 项目。在其中,我添加了:
- Microsoft.EntityFrameworkCore (1.1.0)
- Microsoft.NETCore.App (1.1.0)
我还创建了一个名为 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
已解决
- 右键单击项目,然后单击选项:管理 NuGet 包裹;在浏览中,寻找 EntityFramework 插件,安装它, 然后重启 Visual Studio.
- 创建一个继承自 DbContext 的 MyDbContext class。
- 在工具> NuGet 包管理器> 包管理器控制台
- 启用迁移
- 添加迁移 InitialModel
转到工具->NuGet 包管理器->包管理器控制台
写
install-package EntityFramework
然后
enable-migrations
此命令 运行s 用于项目的整个生命周期意味着您只需在项目中编写一次 但是,如果我们更改模型或添加另一个 class 或进行任何更改,我们可以使用此命令
add-migration migrationNameTest
'migrationNameTest' 是您要分配给它的迁移名称 然而 运行 迁移 转到包管理器和 运行
update-database
- 运行 在程序包管理器控制台中执行以下命令。
- 运行 visual studio 作为管理员。
Install-Package EntityFramework -IncludePrerelease
我的问题解决了。