EntityFrameworkCore не существует в пространстве имен Microsoft

Я пытаюсь пройти этот учебник здесь.

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

Однако после успешной установки EntityFrameworkCore в консоли менеджера пакетов с помощью команды:

Установочный пакет Microsoft.EntityFrameworkCore.SqlServer

а затем успешно завершив восстановление dotnet в cmd, проект не зарегистрирует EntityFrameworkCore. В файле .csproj вы можете увидеть строку

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

К сожалению, всякий раз, когда я добавляю инструкцию using с Microsoft.EntityFrameworkCore в файл, я получаю ошибку, упомянутую в заголовке. Любая идея, почему это может произойти?

Ответ 1

Я решил эту проблему:

(1) Щелкните правой кнопкой мыши проект в обозревателе решений

(2) Щелчок по выгружаемому проекту

(3) Нажмите править .csproj и проверьте, есть ли ссылка на пакет для EF

(4) Щелкните правой кнопкой мыши проект еще раз в обозревателе решений

(5) Затем нажмите кнопку перезагрузить проект

Теперь он распознает EntityFrameworkCore и больше ошибок сборки

Ответ 2

Копирование следующего кода в 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

Вы пропустили требуемый пакет Nuget, согласно Microsoft, вам нужно будет установить всего 3 пакета, но в моем случае требуется только 2 пакета следующим образом:

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

Надеюсь, что это может решить вашу проблему.

Ответ 4

Очистите файл .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" />

Ответ 5

Из одного из других комментариев о файле package.config, двойная проверка... Кажется, моя проблема заключалась в том, что targetFramework = "net472" в файле package.config не соответствует версии проекта .Net. Проект использует 4.7.2, но файл пакета был "471", обновив targetFramework в package.config до "472", проблемы исчезли :)

Кажется, в прошлом никогда не было много проблем со смешиванием 4.xy, до тех пор, пока 4.x не были такими же без проблем, как в последнее время, наверняка .Net хочет, чтобы 4.xy все соответствовали...

'<packages>
   <package id="EntityFramework" version="6.2.0" targetFramework="net472" />
</packages>'

Ответ 6

Перейдите в браузер NuGet и установите Microsoft.EntityFrameworkCore!