J'ai mis à niveau mon code d'ASP.NET Core 2.0 vers Core 2.1. J'ai créé un nouveau projet Core 2.1 et déplacé mon code dans le nouveau projet. J'ai fourni des échantillons de mon démarrage et ApplicationDbContext
J'obtiens l'erreur suivante en essayant de me connecter
Impossible de créer un DbSet pour 'IdentityUser' car ce type n'est pas inclus dans le modèle pour le contexte . 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();
}
}
J'ai examiné les articles Microsoft suivants: 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
Essayez de changer public partial class ApplicationDbContext : IdentityDbContext<ApplicationUser>
en public partial class ApplicationDbContext : IdentityDbContext<IdentityUser>
Le compilateur générera DbSet avec le type fourni à la classe générique IdentityDbContext<TUser>
.
Depuis votre startup.cs change
services.AddDefaultIdentity<IdentityUser>()
À
services.AddDefaultIdentity<ApplicationUser>()
En guise de suivi, pour éviter le prochain problème possible, lorsque ce problème est résolu: Vous devez également modifier les types dans Views\Shared_LoginPartial.cshtml
.
De
@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager
À
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager