«IdentityBuilder» не содержит определения «AddEntityFrameworkStores» при обновлении до .NET 5

#asp.net #asp.net-core

Вопрос:

Я пытаюсь обновить свой .Приложение Net core 2.2 для .net 5.0

Эта линия больше не работает:

 services.AddIdentity<ApplicationUser, IdentityRole>
   .AddEntityFrameworkStores<DataContext>()
   .AddDefaultTokenProviders();
 

Я получил сообщение:

«IdentityBuilder» не содержит определения для «AddEntityFrameworkStores», и не удалось найти доступного метода расширения «AddEntityFrameworkStores», принимающего первый аргумент типа «IdentityBuilder»

Поэтому, основываясь на своих исследованиях, я попытался:

 services.AddIdentity<ApplicationUser, IdentityRole>
   .AddUserStore<DataContext>()
   .AddDefaultTokenProviders();
 

Однако во время компиляции я получаю следующую ошибку во время выполнения:

Тип реализации » автоспорт.Модели.DataContext» не может быть преобразован в тип службы » Microsoft.AspNetCore.Идентичность.Магазин IUserStore`

Это мой DataContext:

 public class DataContext : DbContext
{
    public DataContext(DbContextOptions<DataContext> options) : base(options)
    { }

    public virtual DbSet<ApplicationUser> ApplicationUsers { get; set; }
    public virtual DbSet<RefreshToken> RefreshTokens { get; set; }
}
 

Что я делаю не так? Обратите внимание, что мое приложение предназначено только для API, я вообще не использую представления Razor.

Комментарии:

1. Магазины AddEntityFrameworkStores должны быть доступны в Microsoft. Расширения. Пространство имен DependencyInjection.

2. Вы установили Microsoft.AspNetCore.Identity.EntityFrameworkCore ?

3. В этом-то и была проблема! Спасибо

4. Здравствуйте,@Robbie Mills,я опубликовал это в качестве ответа,можете ли вы принять его? Спасибо.

Ответ №1:

Вам необходимо установить Microsoft.AspNetCore.Идентичность.EntityFrameworkCore, который предоставляет типы для сохранения идентификационных данных с ядром Entity Framework.

Потому что магазины AddEntityFrameworkStores были перемещены в отдельный пакет NuGet Microsoft.AspNetCore.Identity.EntityFrameworkCore .