ASP.NET Core 2.1 - проблема IdentityUser - невозможно создать DbSet для «IdentityUser», этот тип не включен в модель для контекста - PullRequest
0 голосов
/ 07 июня 2018

Я обновил свой код с ASP.NET Core 2.0 до Core 2.1.Я создал новый проект Core 2.1 и перенес свой код в новый проект.Я предоставил образцы моего запуска и ApplicationDbContext

Я получаю следующую ошибку при попытке входа в систему

Невозможно создать DbSet для 'IdentityUser', так как этот тип не включенв модели для контекста.Microsoft.EntityFrameworkCore.Internal.InternalDbSet.get_EntityType ()

startup.cs

//Core 2.1
  services.AddDefaultIdentity<IdentityUser>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();            

////Old Core 2.0 Code
  //services.AddIdentity<ApplicationUser, IdentityRole>()
        //    .AddEntityFrameworkStores<ApplicationDbContext>()
        //    .AddDefaultTokenProviders();

ApplicationDbContext.cs

public partial class ApplicationDbContext : 
    IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> 
 options)
        : base(options)
    {
        Database.EnsureCreated();
     }
 }

Я рассмотрел следующие Microsoftстатьи: https://blogs.msdn.microsoft.com/webdev/2018/05/30/asp-net-core-2-1-0-now-available/

https://docs.microsoft.com/en-us/aspnet/core/migration/20_21?view=aspnetcore-2.1

Ответы [ 4 ]

0 голосов
/ 06 мая 2019

Измените ApplicationDbContext на:

private static bool _Created = false;

public ApplicationDbContext()
{
    if (!_Created)
    {
        _Created = true;
        Database.EnsureCreated();

    }
}

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseSqlServer(@"server = .\SQLSERVER; initial catalog = DBName; Integrated Security = True; MultipleActiveResultSets = True; App = EntityFramework & quot; ");
}

protected override void OnModelCreating(ModelBuilder builder)
{
    base.OnModelCreating(builder);
}
0 голосов
/ 12 октября 2018

Из вашего startup.cs изменить

services.AddDefaultIdentity<IdentityUser>()

На

services.AddDefaultIdentity<ApplicationUser>()
0 голосов
/ 22 декабря 2018

В качестве продолжения, чтобы избежать следующей возможной проблемы, когда это здесь исправлено: Вы также должны изменить типы в Views\Shared_LoginPartial.cshtml

С

@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager

На

@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
0 голосов
/ 07 июня 2018

Попробуйте изменить public partial class ApplicationDbContext : IdentityDbContext<ApplicationUser> на public partial class ApplicationDbContext : IdentityDbContext<IdentityUser>

Компилятор сгенерирует DbSet с типом, предоставленным для универсального IdentityDbContext<TUser> класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...