aboutsummaryrefslogtreecommitdiff
path: root/src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs
diff options
context:
space:
mode:
authorAriel Costas Guerrero <ariel@costas.dev>2025-12-12 08:56:32 +0100
committerAriel Costas Guerrero <ariel@costas.dev>2025-12-12 10:24:53 +0100
commitd65ce8288bbda3cb6e0b37613c29d7bf52703ba7 (patch)
treef6aaf58bbebeaa9b147e895ff8a5388881fa51d8 /src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs
parent661cccc2da9a6c32b7b56c60313787282a9084ea (diff)
Some rework on the ServiceViewer (which will be repurposed for live multi-GTFS serving)
Diffstat (limited to 'src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs')
-rw-r--r--src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs41
1 files changed, 24 insertions, 17 deletions
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)
+ // Route -> Agency
+ modelBuilder.Entity<GtfsRoute>()
+ .HasOne(r => r.Agency)
+ .WithMany()
+ .HasForeignKey(r => new { r.AgencyId, r.FeedId })
+ .HasPrincipalKey(a => new { a.Id, a.FeedId });
+
+ // Trip -> Route
modelBuilder.Entity<GtfsTrip>()
- .HasMany<GtfsStopTime>()
- .WithOne(st => st.GtfsTrip)
- .HasForeignKey(st => st.TripId)
- .OnDelete(DeleteBehavior.Cascade);
+ .HasOne(t => t.Route)
+ .WithMany()
+ .HasForeignKey(t => new { t.RouteId, t.FeedId })
+ .HasPrincipalKey(a => new { a.Id, a.FeedId });
- // Relación Stop -> StopTimes (cascade delete)
- modelBuilder.Entity<GtfsStop>()
- .HasMany<GtfsStopTime>()
- .WithOne(st => st.GtfsStop)
- .HasForeignKey(st => st.StopId)
- .OnDelete(DeleteBehavior.Cascade);
+ // Relación StopTimes -> Trip
+ modelBuilder.Entity<GtfsStopTime>()
+ .HasOne(st => st.GtfsTrip)
+ .WithMany()
+ .HasForeignKey(st => new { st.TripId, st.FeedId })
+ .HasPrincipalKey(a => new { a.Id, a.FeedId });
- // Relación Route -> Trips (cascade delete)
- modelBuilder.Entity<GtfsRoute>()
- .HasMany<GtfsTrip>()
- .WithOne(t => t.Route)
- .HasForeignKey(t => t.RouteId)
- .OnDelete(DeleteBehavior.Cascade);
+ // Relación StopTimes -> Stop
+ modelBuilder.Entity<GtfsStopTime>()
+ .HasOne(st => st.GtfsStop)
+ .WithMany()
+ .HasForeignKey(st => new { st.StopId, st.FeedId })
+ .HasPrincipalKey(a => new { a.Id, a.FeedId });
modelBuilder.Entity<GtfsTrip>()
.Property(t => t.TripWheelchairAccessible)