While developing Web application in Asp.net Core Razor page, I have come across following error
InvalidOperationException: The entity type 'IdentityUserLogin<string>' requires a primary key to be defined.I was doing following thing in my application
- I wanted to set Unique Key constraint on Email for my two models i.e. Vendor and Member model so I had added code below in my ApplicationDbContext file. (You may have different name for your DbContext file.)
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Member>().HasIndex(m => m.Email).IsUnique();
builder.Entity<Vendor>().HasIndex(v => v.Email).IsUnique();
}
public DbSet<Vendor> Vendors { get; set; }
public DbSet<Member> Members { get; set; }
}
Here if we see closely, I am missing base model Creating function. When I build and run code I get error saying InvalidOperationException: The entity type 'IdentityUserLogin' requires a primary key to be defined.
To Resolve this error, I have added base.OnModelCreating(builder); in ApplicationDbContext
check following code
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Member>().HasIndex(m => m.Email).IsUnique();
builder.Entity<Vendor>().HasIndex(v => v.Email).IsUnique();
base.OnModelCreating(builder);
}
public DbSet<Vendor> Vendors { get; set; }
public DbSet<Member> Members { get; set; }
}
This blog answers query - How to resolve The entity type 'IdentityUserLogin<string>' requires a primary key to be defined.
0 thoughts on "The entity type 'IdentityUserLogin' requires a primary key to be defined."