[英]'EntityFrameworkCore' does not exist in the namespace 'Microsoft'
[英]EntityFrameworkCore does not exist in the namespace Microsoft
我正在尝试在这里浏览本教程。
https://learn.microsoft.com/en-us/as.net/core/data/ef-mvc/intro
然而,在 package 管理器控制台成功安装 EntityFrameworkCore 后,使用以下命令:
安装包 Microsoft.EntityFrameworkCore.SqlServer
然后在cmd运行do.net restore成功,项目没有注册EntityFrameworkCore。 在 .csproj 文件中,您可以看到该行
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.1" />
不幸的是,每当我在文件中添加带有 Microsoft.EntityFrameworkCore 的 using 语句时,我都会收到标题中提到的错误。 知道为什么会这样吗?
我通过以下方式解决了这个问题:
(1) 在解决方案资源管理器中右键单击项目
(2) 点击卸载项目
(3) 点击edit the .csproj并检查是否有对EF的Package Reference
(4) 在解决方案资源管理器中再次右键单击项目
(5) 然后点击reload project
现在它可以识别 EntityFrameworkCore 并且不再有构建错误
在视觉代码中:
Ctrl + Shift + P =>重新启动 OmniSharp
转到 NuGet 浏览器并安装 Microsoft.EntityFrameworkCore!
你错过了一个必需的 Nuget 包,根据microsoft ,你总共需要安装 3 个包,但在我的情况下,它只需要 2 个包,如下所示:
希望这可以解决您的问题。
将以下代码从https://github.com/aspnet/Docs/tree/master/aspnetcore/tutorials/first-web-api/sample/TodoApi复制到 TodoApi.csproj 对我有用。
<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 等
如果使用 VS Code,对我有用的解决方案:
在终端类型中:
dotnet add package Microsoft.EntityFrameworkCore
添加包后, Ctrl + Shift + P
->重启OmniSharp
类型->
安装包 microsoft.entityframeworkcore.sqlserver
清理 .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" />
从关于 package.config 文件的其他评论之一,仔细检查......似乎,我的问题似乎是 package.config 文件中的 targetFramework="net472" 与项目的 .Net 版本不匹配。 该项目使用的是 4.7.2,但包文件是“471”,将 package.config 中的 targetFramework 更新为“472”,问题就消失了:)
似乎过去在混合 4.xy 时从来没有遇到过很多问题,只要 4.x 是相同的就没有问题,最近看来 .Net 确实希望 4.xy 全部匹配......
`<packages>
<package id="EntityFramework" version="6.2.0" targetFramework="net472" />
</packages>`
我不得不将实体框架的版本从 6.2 降低到 6.0
我假设这与我遇到的问题相同: https : //docs.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();
但是我决定如果你跳过这个并继续本教程,它会在稍后处理......
在 VS 代码上使用 nugget packege 管理器并以这种方式添加 Microsoft.EntityFrameworkCore 问题将得到解决,它还将把它放入.csproj
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.16"/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.