web-dev-qa-db-fra.com

AddEntityFrameworkStores ne peut être appelé qu'avec un rôle qui dérive d'IdentityRole dans .NET Core 2.0

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?

12
Felipe Santana

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>
{
}
0
Felipe Santana

Pour le même problème, vous pouvez regarder ceci: https://github.com/aspnet/Identity/issues/1364

3
Saber.X

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)
    {
    }
}
0
RainyTears