Что делать выкидывает исключение "AddEntityFrameworkStores can only be called with a user that derives from IdentityUser?
Пишу свой небольшой проект, после добавления пакетов Microsoft.AspNetCore.Identity.EntityFrameworkCore и Microsoft.EntityFrameworkCore.SqlServer, добавил класс user`using Microsoft.AspNetCore.Identity; я определил Модель
namespace PartyInvites.Models
{
public class User : IdentityUser
{
public int Year { get; set; }
}
}
Далее я сделал класс подключения к базе данных с конфигурацией подключения в appsettings.json. Добавил модель для регистрации пользователей
using System.ComponentModel.DataAnnotations;
namespace PartyInvites.Models.ViewsModels
{
public class RegisterViewModels
{
[Required]
[Display(Name = "Email")]
public string Email { get; set; }
[Required]
[Display(Name = "Год рождения")]
public int Year { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Пароль")]
public string Password { get; set; }
[Required]
[Compare("Password", ErrorMessage = "Пароли не совпадают")]
[DataType(DataType.Password)]
[Display(Name = "Подтвердить пароль")]
public string PasswordConfirm { get; set; }
}
}
Так же добавил cshtml cтраничку
@model PartyInvites.Models.ViewsModels.RegisterViewModels
<h2>Регистрация нового пользователя</h2>
<form method="post" asp-controller="Account" asp-action="Register">
<div asp-validation-summary="ModelOnly"></div>
<div>
<label asp-for="Email"></label><br />
<input asp-for="Email" />
<span asp-validation-for="Email"></span>
</div>
<div>
<label asp-for="Year"></label><br />
<input asp-for="Year" />
<span asp-validation-for="Year"></span>
</div>
<div>
<label asp-for="Password"></label><br />
<input asp-for="Password" />
<span asp-validation-for="Password"></span>
</div>
<div>
<label asp-for="PasswordConfirm"></label><br />
<input asp-for="PasswordConfirm" />
<span asp-validation-for="PasswordConfirm"></span>
</div>
<div>
<input type="submit" value="Регистрация" />
</div>
</form>
Далее я прописал app.UseAuthentication(); перед app.UseEndpoints... , и определил подключение к базе данных и начальную конфигурацию для Identity сервисов
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddDbContext<Models.ApplicationContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<System.Web.Providers.Entities.User, IdentityRole>()
.AddEntityFrameworkStores<ApplicationContext>();
}
И на строчке с Сервисами возникает исключение System.InvalidOperationException: "AddEntityFrameworkStores can only be called with a user that derives from IdentityUser.", не могу понять от чего отталкиваться, делаю весьма стандартную регистрацию и классическое подключение к бд. Не судите строго, делаю свой первый небольшой веб проект...Не понимаю от чего здесь надо отталкиваться.
Ответы (1 шт):
Ваш контекст ApplicationContext необходимо наследовать от IdentityDbContext<User> и не забудьте добавить миграции
