diff options
| author | Ariel Costas Guerrero <ariel@costas.dev> | 2025-10-21 15:34:24 +0200 |
|---|---|---|
| committer | Ariel Costas Guerrero <ariel@costas.dev> | 2025-12-12 10:24:53 +0100 |
| commit | 661cccc2da9a6c32b7b56c60313787282a9084ea (patch) | |
| tree | 8176720aa99b80281a8351ae74170238c50b59cc /src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs | |
| parent | ed023a4b5ee257c0c367357b6d83f9778e2cf536 (diff) | |
Begin implementing
Diffstat (limited to 'src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs')
| -rw-r--r-- | src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs b/src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs new file mode 100644 index 0000000..55a5a08 --- /dev/null +++ b/src/Costasdev.Busurbano.ServiceViewer/Data/AppDbContext.cs @@ -0,0 +1,52 @@ +using Costasdev.ServiceViewer.Data.Gtfs; +using Costasdev.ServiceViewer.Data.Gtfs.Enums; +using Microsoft.EntityFrameworkCore; + +namespace Costasdev.ServiceViewer.Data; + +public class AppDbContext : DbContext +{ + public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) + { + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + // Relación Trip -> StopTimes (cascade delete) + modelBuilder.Entity<GtfsTrip>() + .HasMany<GtfsStopTime>() + .WithOne(st => st.GtfsTrip) + .HasForeignKey(st => st.TripId) + .OnDelete(DeleteBehavior.Cascade); + + // Relación Stop -> StopTimes (cascade delete) + modelBuilder.Entity<GtfsStop>() + .HasMany<GtfsStopTime>() + .WithOne(st => st.GtfsStop) + .HasForeignKey(st => st.StopId) + .OnDelete(DeleteBehavior.Cascade); + + // Relación Route -> Trips (cascade delete) + modelBuilder.Entity<GtfsRoute>() + .HasMany<GtfsTrip>() + .WithOne(t => t.Route) + .HasForeignKey(t => t.RouteId) + .OnDelete(DeleteBehavior.Cascade); + + modelBuilder.Entity<GtfsTrip>() + .Property(t => t.TripWheelchairAccessible) + .HasDefaultValue(TripWheelchairAccessible.Empty); + + modelBuilder.Entity<GtfsTrip>() + .Property(t => t.TripBikesAllowed) + .HasDefaultValue(TripBikesAllowed.Empty); + } + + public DbSet<GtfsAgency> Agencies { get; set; } + public DbSet<GtfsCalendar> Calendars { get; set; } + public DbSet<GtfsCalendarDate> CalendarDates { get; set; } + public DbSet<GtfsRoute> Routes { get; set; } + public DbSet<GtfsStop> Stops { get; set; } + public DbSet<GtfsStopTime> StopTimes { get; set; } + public DbSet<GtfsTrip> Trips { get; set; } +} |
