![](/img/trans.png)
[英]'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.