EntityFrameworkCore在Microsoft命名空间中不存在。

37

我正尝试学习这个教程。

https://learn.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro

然而,在成功使用以下命令在包管理器控制台中安装EntityFrameworkCore:

Install-Package Microsoft.EntityFrameworkCore.SqlServer

并在cmd中成功运行dotnet restore之后,该项目未注册EntityFrameworkCore。在.csproj文件中,您可以看到以下行:

<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.1" />

不幸的是,每当我在文件中添加一个使用 Microsoft.EntityFrameworkCore 的语句时,就会出现标题中提到的错误。有任何想法为什么会发生这种情况吗?


3
只是想说,现在是2017年7月,这段代码仍然有些不稳定。如果出现类似的错误,请尝试重新启动VS2017。我知道,我知道...这有点荒谬,但今天它确实修复了我遇到的一些ASP.Net Core问题。而我所做的只是遵循微软自己的教程。https://learn.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db#comments-container - Mike Gledhill
现在是2023年5月,如果有人遇到这个问题,请确保不要将GitHub存储库放在同一个文件夹中(GitHub桌面应用程序可能会自动在那里为您创建它)。 - PhantomPhreak1995
14个回答

63

我通过以下方式解决了这个问题:

(1) 在“解决方案资源管理器”中右键单击项目

(2) 点击"卸载项目"

(3) 点击编辑.csproj文件并检查是否有对EF的包引用

(4) 再次在“解决方案资源管理器”中右键单击项目

(5) 然后点击"重新加载项目"

现在它能识别EntityFrameworkCore且不再有编译错误


3
我会尽力为您完成完美的翻译。即使我不明白为什么您需要卸载并重新加载您的项目......太奇怪了。 - Mehdi Bugnard
1
这对我部分地起作用,但是我的其中一个命名空间没有被识别。我不得不关闭并重新打开VS才能使一切正常工作。 - Bruno
1
但这并没有帮助我,它只是更新了.csproj文件。'EntityFrameworkCore'类型或命名空间在'Microsoft'命名空间中不存在。 - streamc

26
在Visual Studio Code中: 按下Ctrl + Shift + P,然后选择重新启动OmniSharp

2
这应该是要做的第一件事情!感谢这个。 - Renier

9
前往NuGet浏览器,并安装Microsoft.EntityFrameworkCore!

9
针对使用VS Code或终端的用户,建议使用dotnet add package Microsoft.EntityFrameworkCore命令来添加Microsoft.EntityFrameworkCore包。 - Kola

7

你错过了一个必需的Nuget包,根据Microsoft的说明,你需要安装总共3个包,但在我的情况下,只需要安装以下2个包:

  • Microsoft.EntityFrameworkCore.SqlServer
  • Microsoft.EntityFrameworkCore.Tools

希望这可以解决你的问题。


6
如果使用 VS Code,对我有效的解决方案如下:
在终端中键入:
dotnet add package Microsoft.EntityFrameworkCore

添加完包后,按Ctrl + Shift + P -> 重新启动 OmniSharp


4

将以下代码复制到TodoApi.csproj中,代码来源于https://github.com/aspnet/Docs/tree/master/aspnetcore/tutorials/first-web-api/sample/TodoApi,对我有用。

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Folder Include="wwwroot\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
  </ItemGroup>

</Project>

Microsoft.AspNetCore.All可能有些冗余,但它包含了EntityFrameworkCore等组件。


3
在Visual Studio中,转到 -> 项目 -> 管理 NuGet 包.. -> In Visual
选择Microsoft Entity Framework Core。然后点击右下角的添加包按钮。

enter image description here


1
  1. 在Visual Studio中前往“工具” » “NuGet程序包管理器” » “程序包管理器控制台”
  2. 输入->

    install-package microsoft.entityframeworkcore.sqlserver


1
也许在这种情况下只需要运行 install-package microsoft.entityframeworkcore 命令即可。 - Aaron C

0

我假设这是我遇到的同样问题: https://learn.microsoft.com/en-us/aspnet/core/tutorials/razor-pages/?view=aspnetcore-6.0

入门指南包括一个部分,让你相信你需要添加以下内容 -

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RazorPagesMovie.Data;
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();

builder.Services.AddDbContext<RazorPagesMovieContext>(options => 
       options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext")));

var app = builder.Build();

然而,我确定如果您跳过这一部分并继续教程,它稍后会被处理...


0

清理 .csproj 文件,如果你看到类似这样的东西...

<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.4">
   <PrivateAssets>all</PrivateAssets>
   <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>

将其更改为:

这样做:

<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.4" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接