using Microsoft.EntityFrameworkCore; namespace DeluxeNET.Data { public class AppDbContext : DbContext { public AppDbContext(DbContextOptions options) : base(options) { } public DbSet CachedLogins { get; set; } public DbSet Accounts { get; set; } public DbSet Settings { get; set; } public DbSet Avatars { get; set; } public DbSet Progressions { get; set; } public DbSet Reputations { get; set; } public DbSet Rooms { get; set; } public DbSet RoomRoles { get; set; } public DbSet RoomStats { get; set; } public DbSet SubRooms { get; set; } public DbSet SubRoomSaves { get; set; } public DbSet Heartbeats { get; set; } public DbSet RoomInstances { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity() .HasMany(r => r.SubRooms) .WithOne(sr => sr.Room) .HasForeignKey(sr => sr.RoomId) .OnDelete(DeleteBehavior.Cascade); modelBuilder.Entity() .HasMany(r => r.Roles) .WithOne(rr => rr.Room) .HasForeignKey(rr => rr.RoomId) .OnDelete(DeleteBehavior.Cascade); modelBuilder.Entity() .HasOne(r => r.Stats) .WithOne(rs => rs.Room) .HasForeignKey(rs => rs.RoomId) .OnDelete(DeleteBehavior.Cascade); modelBuilder.Entity() .HasOne(sr => sr.CurrentSave) .WithOne(srs => srs.SubRoom) .HasForeignKey(srs => srs.SubRoomId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity() .HasOne(srs => srs.Room) .WithMany() .HasForeignKey(srs => srs.RoomId) .OnDelete(DeleteBehavior.Cascade); modelBuilder.Entity() .HasOne(h => h.RoomInstance) .WithMany(r => r.Heartbeats) .HasForeignKey(h => h.RoomInstanceId) .OnDelete(DeleteBehavior.SetNull); modelBuilder.Entity() .HasIndex(r => r.Name); } } }