AddEntityFrameworkStores can only be called with a role that derives from IdentityRole in .NET Core 2.0

Felipe Santana picture Felipe Santana · Aug 16, 2017 · Viewed 11.6k times · Source

I have changed a project from the .NET Core 1.1 to 2.0 version, but I'm getting an error from the Identity, when It tries to add the stores:

services.AddIdentity<ApplicationUser, IdentityRole<long>>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();

The thrown error is:

AddEntityFrameworkStores can only be called with a role that derives from IdentityRole

These are my classes:

public class ApplicationUser : IdentityUser<long>
{
}

public class ApplicationDbContext : IdentityDbContext<ApplicationUser, IdentityRole<long>, long>        
{
        public ApplicationDbContext(DbContextOptions options) : base(options) { 
        }
}

Someone could help me?

Answer

Felipe Santana picture Felipe Santana · Jun 5, 2019

Long time since I asked this question, but here's how I deal with nowadays:

Startup.cs

services.AddIdentity<User, Role>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddScoped<RoleManager<Role>>();

Entites:

public class User : IdentityUser<int>
{
}

public class Role : IdentityRole<int>
{
}