«Невозможно создать DbSet для IdentityUser, этот тип не включен в модель для контекста» в ASP.Net Core 7 MVC
Сначала немного информации обо мне
- Компьютер: Макбук Про 2019 г.
- Версия ядра .NET: 7
- Тип проекта ASP.Net: ASP.Net Core MVC
- IDE: Код Visual Studio
Проблема
Если вы используете пользовательскую модель для IdentityUser, вам необходимо создать пользовательскую модель (т. е. «ApplicationUser»), а затем расширить IdentityUser следующим образом:
using System;
using Microsoft.AspNetCore.Identity;
namespace App.Models
{
public class ApplicationUser : IdentityUser
{
// TODO: Write my custom fields, relations, etc.
}
}
Затем вы переходите в контекст вашей базы данных (т. е. «ApplicationDbContext»), который обычно находится в папке «Данные».
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using App.Models;
using Microsoft.AspNetCore.Identity;
namespace App.Data;
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
В этом случае вы устанавливаете ApplicationUser в качестве переопределения для IdentityUser.
Итак, как только вы это сделали и побежалиdotnet ef migrations add <your-migration-name>
иdotnet ef database update
, вы запускаете отладчик в Visual Studio Code, Visual Studio или любой другой среде IDE, в которой вы кодируете, и сайт появляется перед вами.
Проблема, с которой вы сейчас сталкиваетесь, заключается в том, что когда вы пытаетесь войти в систему как существующий пользователь или зарегистрироваться как новый, вы сталкиваетесь с чем-то похожим на этот экран.
Что мне делать?
1 ответ
Вы должны войти в_LoginPartial.cshtml
и изменить впрыски:
От
@using Microsoft.AspNetCore.Identity
@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager
К
@using Microsoft.AspNetCore.Identity
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
Также
В моей версии у меня нетStartup.cs
файл. Вместо этого у меня есть синглProgram.cs
файл. В этом файле вы должны найти:
builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
И измените его на:
builder.Services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
Затем перезапустите отладчик, и у пользовательской части вашего сайта больше не должно быть проблем.