diff options
| author | Ariel Costas Guerrero <ariel@costas.dev> | 2025-12-12 08:56:32 +0100 |
|---|---|---|
| committer | Ariel Costas Guerrero <ariel@costas.dev> | 2025-12-12 10:24:53 +0100 |
| commit | d65ce8288bbda3cb6e0b37613c29d7bf52703ba7 (patch) | |
| tree | f6aaf58bbebeaa9b147e895ff8a5388881fa51d8 /src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs | |
| parent | 661cccc2da9a6c32b7b56c60313787282a9084ea (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.cs | 41 |
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) |
