繁体   English   中英

EntityFrameworkCore 在命名空间 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 个包,如下所示:

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

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

将以下代码从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

  1. 转到 Visual Studio 中的工具 » NuGet 包管理器 » 包管理器控制台
  2. 类型->

    安装包 microsoft.entityframeworkcore.sqlserver

在 Visual Studio 中,转到 ->项目->管理 NuGet 包.. -> 在视觉

选择Microsoft 实体框架 Core 单击右下角按钮上的添加包

在此处输入图片说明

清理 .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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM