Why does this violate the type constraint?
Ran into this problem as well. I had to add IdentityRole key type also, because it was still throwing the same error.
services.AddIdentity<ApplicationUser, IdentityRole<int>>()
.AddEntityFrameworkStores<ApplicationDbContext,int>()
.AddDefaultTokenProviders();
Ran into this problem. It was crashing on the startup.cs file. changed
services.AddIdentity<ApplicationUser, ApplicationIdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
to
services.AddIdentity<ApplicationUser, ApplicationIdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext,int>()
.AddDefaultTokenProviders();
declaring the key type seemed to get past the crash
Note for EF Core Users
Just to add to the above, if you are using .Net core 3.0 (not sure about earlier versions), there is no longer a AddEntityFrameworkStores<TContext,TKey>
method.
Instead there is a generic variant of IdentityDbContext
so instead you derive your DbContext from IdentityDbContext<TUser,TRole,TKey>
e.g. in my case
class ApplicationUser : IdentityUser<int> {...}
class ApplicationDbContext : IdentityDbContext<ApplicationUser, IdentityRole<int>, int> {...}
then in your startup you can use services.AddDefaultIdentity<ApplicationUser>
cribbed from the last comment in https://github.com/aspnet/Identity/issues/1082