The entity type 'IdentityUserLogin' requires a primary key to be defined.

June 21, 2020 0 comments
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&lt;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.

 
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&lt;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. 
Share Share Tweet Share

0 thoughts on "The entity type 'IdentityUserLogin' requires a primary key to be defined."

LEAVE A REPLY