Получение 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>
,
После этих изменений логин работает нормально.