Получение InvalidOperationException после преобразования из.NET 2 в.NET 3.0

Я обновил свое веб-приложение.NET 2.0 с.NET 3.0. Теперь он компилируется, но когда я пытаюсь войти в систему, я получаю сообщение об ошибке "InvalidOperationException: невозможно создать DbSet для ApplicationUser", так как этот тип не включен в модель для контекста ". Очевидно, что обращение к базе данных невозможно, но я не вижу, в чем заключается моя ошибка.

Я получил это в Startup.cs (ConfigureServices)

services.AddDbContext<ApplicationDbContext>(options =>
  options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));


   services.AddDefaultIdentity<ApplicationUser>()
        .AddEntityFrameworkStores<ApplicationDbContext>()
        .AddDefaultTokenProviders();

Вот мое приложение DBContext.cs:

public class ApplicationDbContext : IdentityDbContext
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);
        }
    }

Стек ошибок выглядит следующим образом:

Microsoft.EntityFrameworkCore.Internal.InternalDbSet.get_EntityType (). Microsoft.EntityFrameworkCore.Internal.InternalDbSet.CheckState(). Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ExecuteAsync(MethodInfo operatorMethodInfo, IQueryable источник, выражение выражение, CancellationToken CancellationToken) Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ExecuteAsync(MethodInfo operatorMethodInfo, IQueryable источник, экспрессия LambdaExpression, CancellationToken CancellationToken) Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.FirstOrDefaultAsync(IQueryable источник, Выражение> предикат, CancellationToken cancellationToken) Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore.FindByNameAsync(строка normalizedUserName, CancellationToken cancellationToken) Microsoft.AspNetCore.Identity.UserManager. AccountController.cs + var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, false, lockoutOnFailure: true); Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(преобразователь IActionResultTypeMapper, исполнитель ObjectMethodExecutor, контроллер объектов, аргументы объекта [])

Чего мне не хватает?

1 ответ

Наконец, ответом было вернуться к IdentityUser вместо ApplicationUser, Это означало, что я также должен был изменить везде код, где я использовал SignInManager<ApplicationUser> а также UserManager<ApplicationUser> в SignInManager<IdentityUser> а также UserManager<IdentityUser>,

После этих изменений логин работает нормально.

Другие вопросы по тегам