Can't inherit from IdentityUser and IdentityRole in ASP.NET Core 2.0
Solved.
The package that was keeping those classes Microsoft.AspNetCore.Identity.EntityFrameworkCore
changed. To access those clases (IdentityUser
and IdentityRole
) one must add
using Microsoft.AspNetCore.Identity;
With this, the problem is gone.
ICollection<IdentityUserRole<int>> Roles
, ICollection<IdentityUserClaim<int>> Claims
and ICollection<IdentityUserLogin<int>> Logins
navigation properties have been removed from Microsoft.AspNetCore.Identity.IdentityUser
.
You should define them manually
public class MyUser : IdentityUser
{
public virtual ICollection<IdentityUserRole<int>> Roles { get; } = new List<IdentityUserRole<int>>();
public virtual ICollection<IdentityUserClaim<int>> Claims { get; } = new List<IdentityUserClaim<int>>();
public virtual ICollection<IdentityUserLogin<int>> Logins { get; } = new List<IdentityUserLogin<int>>();
}
To prevent duplicate foreign keys when running EF Core Migrations, add the following to your IdentityDbContext
class' OnModelCreating
method
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<MyUser>()
.HasMany(e => e.Claims)
.WithOne()
.HasForeignKey(e => e.UserId)
.IsRequired()
.OnDelete(DeleteBehavior.Cascade);
builder.Entity<MyUser>()
.HasMany(e => e.Logins)
.WithOne()
.HasForeignKey(e => e.UserId)
.IsRequired()
.OnDelete(DeleteBehavior.Cascade);
builder.Entity<MyUser>()
.HasMany(e => e.Roles)
.WithOne()
.HasForeignKey(e => e.UserId)
.IsRequired()
.OnDelete(DeleteBehavior.Cascade);
}
Migrating Authentication and Identity to ASP.NET Core 2.0
For me it got solved by installing package:
Microsoft.Extensions.Identity.Stores