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

Tags:

C#

.Net

Asp.Net