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!