namespace FinControl.Infrastructure.Persistence; using Microsoft.EntityFrameworkCore; using FinControl.Domain.Entities; public class FinControlContext : DbContext { public FinControlContext(DbContextOptions options) : base(options) { } public DbSet Users { get; set; } = null!; public DbSet Accounts { get; set; } = null!; public DbSet Categories { get; set; } = null!; public DbSet Transactions { get; set; } = null!; public DbSet Goals { get; set; } = null!; public DbSet Transfers { get; set; } = null!; public DbSet AuditLogs { get; set; } = null!; protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity() .HasMany(u => u.Accounts) .WithOne(a => a.User) .HasForeignKey(a => a.UserId) .OnDelete(DeleteBehavior.Cascade); modelBuilder.Entity() .HasMany(u => u.Categories) .WithOne(c => c.User) .HasForeignKey(c => c.UserId) .OnDelete(DeleteBehavior.Cascade); modelBuilder.Entity() .HasMany(u => u.Goals) .WithOne(g => g.User) .HasForeignKey(g => g.UserId) .OnDelete(DeleteBehavior.Cascade); modelBuilder.Entity() .HasMany(a => a.Transactions) .WithOne(t => t.Account) .HasForeignKey(t => t.AccountId) .OnDelete(DeleteBehavior.Cascade); modelBuilder.Entity() .HasMany(c => c.Transactions) .WithOne(t => t.Category) .HasForeignKey(t => t.CategoryId) .OnDelete(DeleteBehavior.Cascade); } }