using Microsoft.EntityFrameworkCore; namespace RobotNet.MapManager.Data; public class MapEditorDbContext(DbContextOptions options) : DbContext(options) { public DbSet Maps { get; private set; } public DbSet Nodes { get; private set; } public DbSet Edges { get; private set; } public DbSet Zones { get; private set; } public DbSet Actions { get; private set; } public DbSet ElementModels { get; private set; } public DbSet Elements { get; private set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity() .HasMany(e => e.Actions) .WithOne(e => e.Map) .HasForeignKey(e => e.MapId) .OnDelete(DeleteBehavior.Restrict) .IsRequired(); modelBuilder.Entity() .HasMany(e => e.Edges) .WithOne(e => e.Map) .HasForeignKey(e => e.MapId) .OnDelete(DeleteBehavior.Restrict) .IsRequired(); modelBuilder.Entity() .HasMany(e => e.Nodes) .WithOne(e => e.Map) .HasForeignKey(e => e.MapId) .OnDelete(DeleteBehavior.Restrict) .IsRequired(); modelBuilder.Entity() .HasMany(e => e.Zones) .WithOne(e => e.Map) .HasForeignKey(e => e.MapId) .OnDelete(DeleteBehavior.Restrict) .IsRequired(); modelBuilder.Entity() .HasOne(e => e.StartNode) .WithMany(n => n.StartEdges) .HasForeignKey(e => e.StartNodeId) .OnDelete(DeleteBehavior.Restrict) .IsRequired(); modelBuilder.Entity() .HasOne(e => e.EndNode) .WithMany(n => n.EndEdges) .HasForeignKey(e => e.EndNodeId) .OnDelete(DeleteBehavior.Restrict) .IsRequired(); modelBuilder.Entity() .HasMany(e => e.ElementModels) .WithOne(e => e.Map) .HasForeignKey(e => e.MapId) .OnDelete(DeleteBehavior.Restrict) .IsRequired(); modelBuilder.Entity() .HasMany(e => e.Elements) .WithOne(e => e.Map) .HasForeignKey(e => e.MapId) .OnDelete(DeleteBehavior.Restrict) .IsRequired(); modelBuilder.Entity() .HasOne(n => n.Element) .WithOne(e => e.Node) .HasForeignKey(e => e.NodeId) .OnDelete(DeleteBehavior.Restrict) .IsRequired(); modelBuilder.Entity() .HasMany(e => e.Elements) .WithOne(e => e.Model) .HasForeignKey(e => e.ModelId) .OnDelete(DeleteBehavior.Restrict) .IsRequired(); base.OnModelCreating(modelBuilder); } }