簡體   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