From d65ce8288bbda3cb6e0b37613c29d7bf52703ba7 Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero Date: Fri, 12 Dec 2025 08:56:32 +0100 Subject: Some rework on the ServiceViewer (which will be repurposed for live multi-GTFS serving) --- .../Data/AppDbContext.cs | 45 +++++++++++++--------- 1 file changed, 26 insertions(+), 19 deletions(-) (limited to 'src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs') diff --git a/src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs b/src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs index 55a5a08..50f0791 100644 --- a/src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs +++ b/src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs @@ -12,26 +12,33 @@ public class AppDbContext : DbContext protected override void OnModelCreating(ModelBuilder modelBuilder) { - // Relación Trip -> StopTimes (cascade delete) - modelBuilder.Entity() - .HasMany() - .WithOne(st => st.GtfsTrip) - .HasForeignKey(st => st.TripId) - .OnDelete(DeleteBehavior.Cascade); - - // Relación Stop -> StopTimes (cascade delete) - modelBuilder.Entity() - .HasMany() - .WithOne(st => st.GtfsStop) - .HasForeignKey(st => st.StopId) - .OnDelete(DeleteBehavior.Cascade); - - // Relación Route -> Trips (cascade delete) + // Route -> Agency modelBuilder.Entity() - .HasMany() - .WithOne(t => t.Route) - .HasForeignKey(t => t.RouteId) - .OnDelete(DeleteBehavior.Cascade); + .HasOne(r => r.Agency) + .WithMany() + .HasForeignKey(r => new { r.AgencyId, r.FeedId }) + .HasPrincipalKey(a => new { a.Id, a.FeedId }); + + // Trip -> Route + modelBuilder.Entity() + .HasOne(t => t.Route) + .WithMany() + .HasForeignKey(t => new { t.RouteId, t.FeedId }) + .HasPrincipalKey(a => new { a.Id, a.FeedId }); + + // Relación StopTimes -> Trip + modelBuilder.Entity() + .HasOne(st => st.GtfsTrip) + .WithMany() + .HasForeignKey(st => new { st.TripId, st.FeedId }) + .HasPrincipalKey(a => new { a.Id, a.FeedId }); + + // Relación StopTimes -> Stop + modelBuilder.Entity() + .HasOne(st => st.GtfsStop) + .WithMany() + .HasForeignKey(st => new { st.StopId, st.FeedId }) + .HasPrincipalKey(a => new { a.Id, a.FeedId }); modelBuilder.Entity() .Property(t => t.TripWheelchairAccessible) -- cgit v1.3