using DotBased.AspNet.Authority.Models.Authority; using Microsoft.EntityFrameworkCore; namespace DotBased.AspNet.Authority.EFCore; public class AuthorityContext(DbContextOptions options) : DbContext(options) { public DbSet Attributes { get; set; } public DbSet Groups { get; set; } public DbSet Roles { get; set; } public DbSet Users { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity(attributeEntity => { attributeEntity.ToTable("authority_attributes"); attributeEntity.HasKey(a => new { a.BoundId, a.AttributeKey }); }); modelBuilder.Entity(groupEntity => { groupEntity.ToTable("authority_groups"); groupEntity.HasKey(x => x.Id); groupEntity.HasMany(g => g.Attributes).WithOne().HasForeignKey(a => a.BoundId).OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(roleEntity => { roleEntity.ToTable("authority_roles"); roleEntity.HasKey(x => x.Id); }); modelBuilder.Entity(userEntity => { userEntity.ToTable("authority_users"); userEntity.HasKey(x => x.Id); userEntity.HasMany(u => u.Attributes).WithOne().HasForeignKey(a => a.BoundId).OnDelete(DeleteBehavior.Cascade); }); base.OnModelCreating(modelBuilder); } }