55 lines
1.6 KiB
C#
55 lines
1.6 KiB
C#
using cuqmbr.TravelGuide.Domain.Enums;
|
|
using cuqmbr.TravelGuide.Domain.Entities;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using cuqmbr.TravelGuide.Persistence.TypeConverters;
|
|
|
|
namespace cuqmbr.TravelGuide.Persistence.InMemory;
|
|
|
|
public class InMemoryDbContext : DbContext
|
|
{
|
|
public InMemoryDbContext(DbContextOptions<InMemoryDbContext> options)
|
|
: base(options) { }
|
|
|
|
protected override void OnModelCreating(ModelBuilder builder)
|
|
{
|
|
base.OnModelCreating(builder);
|
|
|
|
builder
|
|
.Entity<Vehicle>()
|
|
.ToTable("vehicles")
|
|
.UseTphMappingStrategy()
|
|
.HasDiscriminator(v => v.VehicleType)
|
|
.HasValue<Bus>(VehicleType.Bus)
|
|
.HasValue<Aircraft>(VehicleType.Aircraft)
|
|
.HasValue<Train>(VehicleType.Train);
|
|
}
|
|
|
|
protected override void ConfigureConventions(
|
|
ModelConfigurationBuilder builder)
|
|
{
|
|
builder
|
|
.Properties<VehicleType>()
|
|
.HaveColumnType("varchar(16)")
|
|
.HaveConversion<VehicleTypeConverter>();
|
|
|
|
builder
|
|
.Properties<Currency>()
|
|
.HaveColumnType("varchar(8)")
|
|
.HaveConversion<CurrencyConverter>();
|
|
|
|
builder
|
|
.Properties<DocumentType>()
|
|
.HaveColumnType("varchar(64)")
|
|
.HaveConversion<DocumentTypeConverter>();
|
|
|
|
builder
|
|
.Properties<Sex>()
|
|
.HaveColumnType("varchar(32)")
|
|
.HaveConversion<SexConverter>();
|
|
|
|
builder
|
|
.Properties<DateTimeOffset>()
|
|
.HaveConversion<DateTimeOffsetConverter>();
|
|
}
|
|
}
|