Пространство имен Microsoft.Extensions.EntityFrameworkCore не найдено в .NET Core 2.2 - PullRequest
2 голосов
/ 31 марта 2019

Я читаю книгу "Pro ASP.NET Core MVC 2" и следую его примерам, и дошел до того, что он вводит EF Core.

Он говорит добавить следующее к .csproj file ...

<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" 
                        Version="2.0.0" />

... и затем добавьте следующее к методу ConfigureServices в Startup.cs ...

services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(
        Configuration["Data:SportStoreProducts:ConnectionString"]));

Проблема заключается в том, что при добавленииВ строке моего .csproj файла я получаю сообщение в окне вывода о том, что ...

C: \ Program Files \ dotnet \ sdk \ 2.2.104 \ Sdks \ Microsoft.NET.Sdk \ target \ Microsoft.NET.ObsoleteReferences.targets (33,5): Предупреждение NETSDK1059: Инструмент «Microsoft.EntityFrameworkCore.Tools.DotNet» теперь включен в .NET Core SDK.Информация по устранению этого предупреждения доступна по адресу (https://aka.ms/dotnetclitools-in-box).

OK, поэтому я снова удалил строку из файла .csproj и получил ошибку компилятора в файле Startup.cs:

Тип ApplicationDbContext не найден.

Я добавил использование для пространства имен Microsoft.Extensions.EntityFrameworkCore, но это вызвало ошибку компилятора, сказав, что он не найден. Я взялпредложение (от R #, я думаю), чтобы найти Nuget, но ничего не пришло

У кого-нибудь есть идеи? Кроме понижения до 2.0, я не знаю, как поступить.

ОБНОВЛЕНИЕ ОК, так что я сумасшедший. Я прочитал книгу в постели, а затем попытался написать пример кода на следующий день и подумал, что знаю содержание, прочитав егово время создания проекта. Должно быть, я пропустил два фрагмента кода, в которых он показал изменения. Вся моя вина, а не книга.

1 Ответ

3 голосов
/ 01 апреля 2019

Недостаток книг ASP.NET Core в том, что они настолько быстро устаревают.

На этой странице объясняется, что ссылки <DotNetCliToolReference> для команд dotnet ef теперь являются частью SDK, поэтому они больше не нужны.

Что касается невозможности найти класс ApplicationDbContext, то это потому, что используемый шаблон проекта не использовал ASP.NET Core Identity для Индивидуальные учетные записи пользователей , и в книге не объяснялось, что класс должен быть создан вручную, или вы не следовали этому полностью. У вас есть две возможности исправить это:

  • Создайте заново проект, используя ASP.NET Core Identity. Шаги здесь или
  • Создайте тот класс, который просто такой:

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
    }
    

    Обратите внимание, однако, что если книга не показывает этого, вам придется установить ряд пакетов ASP.NET Core Identity, пакетов Entity Framework Core, настроить их все в классе Startup и создать класс ApplicationUser, если Я ничего не пропускаю. Довольно большой объем утомительной работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...