Hi!
I'm trying to implement individual authentication feature in my project. When inheriting the DbContext class, the project reflects migration changes to the database normally. But when I change to IdentityDbContext, Visual Studio returns the following error:
The entity type 'IdentityUserLogin' requires a primary key to be defined. If you intended to use a keyless entity type, call 'HasNoKey' in 'OnModelCreating'.
How to fix this problem? Here's my code below:
using CleanArch.Domain.Entities;
using CleanArch.Infra.Data.EntityConfigurations;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
namespace CleanArch.Infra.Data.Context
{
public class ApplicationDbContext : IdentityDbContext
//public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions options)
: base(options)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
//if (!optionsBuilder.IsConfigured)
//{
//}
}
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity()
.HasMany(p => p.Products)
.WithOne(c => c.Category)
.HasForeignKey(p => p.IdCategory);
builder.Entity()
.HasMany(d => d.OrderDetails)
.WithOne(p => p.Product)
.HasForeignKey(d => d.ProductId);
builder.Entity()
.HasKey(od => new { od.OrderDetailId, od.ProductId });
builder.Entity()
.HasMany(d => d.OrderDetails)
.WithOne(o => o.Order)
.HasForeignKey(d => d.OrderId);
builder.Entity()
.HasMany(o => o.Orders)
.WithOne(c => c.Client)
.HasForeignKey(o => o.ClientId);
builder.ApplyConfiguration(new ProductConfigurations());
builder.ApplyConfiguration(new CategoryConfigurations());
builder.ApplyConfiguration(new OrderConfigurations());
builder.ApplyConfiguration(new OrderDetailConfigurations());
builder.ApplyConfiguration(new ClientConfigurations());
//base.OnModelCreating(builder);
//ModelBuilder builder.ApplyConfiguration(new ProductConfiguration());
}
public DbSet Products { get; set; }
public DbSet Categorys { get; set; }
public DbSet Clients { get; set; }
public DbSet Orders { get; set; }
public DbSet OrderDetails { get; set; }
}
}