Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using FlightBooking.Service.Data.ModelConfigurations;
using FlightBooking.Service.Data.Models;
using Microsoft.EntityFrameworkCore;
namespace FlightBooking.Service.Data
{
public class FlightBookingContext : DbContext
{
public FlightBookingContext(DbContextOptions<FlightBookingContext> options) : base(options)
{
}
public DbSet<Booking> Bookings { get; set; }
public DbSet<BookingOrder> BookingOrders { get; set; }
public DbSet<ReservedSeat> ReservedSeats { get; set; }
public DbSet<Payment> Payments { get; set; }
public DbSet<FlightFare> FlightFares { get; set; }
public DbSet<FlightInformation> FlightInformation { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//configure each model
modelBuilder.ApplyConfiguration(new FlightInformationConfiguration());
modelBuilder.ApplyConfiguration(new FlightFareConfiguration());
modelBuilder.ApplyConfiguration(new BookingConfiguration());
modelBuilder.ApplyConfiguration(new BookingOrderConfiguration());
modelBuilder.ApplyConfiguration(new PaymentConfiguration());
modelBuilder.ApplyConfiguration(new ReservedSeatConfiguration());
////Ensure all dates are saved as UTC and read as UTC:
////https://github.com/dotnet/efcore/issues/4711#issuecomment-481215673
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
{
foreach (var property in entityType.GetProperties())
{
if (property.ClrType == typeof(DateTime))
{
modelBuilder.Entity(entityType.ClrType)
.Property<DateTime>(property.Name)
.HasConversion(
v => v.ToUniversalTime(),
v => DateTime.SpecifyKind(v, DateTimeKind.Utc));
}
else if (property.ClrType == typeof(DateTime?))
{
modelBuilder.Entity(entityType.ClrType)
.Property<DateTime?>(property.Name)
.HasConversion(
v => v.HasValue ? v.Value.ToUniversalTime() : v,
v => v.HasValue ? DateTime.SpecifyKind(v.Value, DateTimeKind.Utc) : v);
}
}
}
}
public override Task<int> SaveChangesAsync(bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = default)
{
return base.SaveChangesAsync(acceptAllChangesOnSuccess, cancellationToken);
}
//protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
//{
// base.OnConfiguring(optionsBuilder);
//}
}
}