J'ai changé un projet de la version .NET Core 1.1 à la version 2.0, mais je reçois une erreur de l'identité, quand il essaie d'ajouter les magasins:
services.AddIdentity<ApplicationUser, IdentityRole<long>>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
L'erreur levée est:
AddEntityFrameworkStores ne peut être appelé qu'avec un rôle qui dérive d'IdentityRole
Ce sont mes cours:
public class ApplicationUser : IdentityUser<long>
{
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, IdentityRole<long>, long>
{
public ApplicationDbContext(DbContextOptions options) : base(options) {
}
}
Quelqu'un pourrait m'aider?
Cela fait longtemps que je n'ai pas posé cette question, mais voici comment je m'adresse de nos jours:
Startup.cs
services.AddIdentity<User, Role>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddScoped<RoleManager<Role>>();
Entités:
public class User : IdentityUser<int>
{
}
public class Role : IdentityRole<int>
{
}
Pour le même problème, vous pouvez regarder ceci: https://github.com/aspnet/Identity/issues/1364
Créez d'abord ces deux classes comme suit: (Entités personnalisées)
public class AppUser : IdentityUser<long>
{
}
public class AppRole : IdentityRole<long>
{
public AppRole() : base()
{
}
public AppRole(string roleName)
{
Name = roleName;
}
}
Puis changez la fonction ConfigureServices en fichier Startup.cs:
services.AddIdentity<AppUser, AppRole>()
.AddEntityFrameworkStores<MyDbContext>()
.AddDefaultTokenProviders();
Enfin, créez la classe db:
public class MyDbContext : IdentityDbContext<AppUser,AppRole,long>
{
public MyDbContext(DbContextOptions<MyDbContext> options)
: base(options)
{
}
}