Files
Partsource/PartSource.Data/PartSourceContext.cs
2021-03-30 10:09:57 -04:00

74 lines
2.4 KiB
C#

using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using PartSource.Data.Models;
namespace PartSource.Data
{
public class PartSourceContext : DbContext
{
public PartSourceContext(DbContextOptions<PartSourceContext> contextOptions)
: base(contextOptions) { }
public DbSet<ApiClient> ApiClients { get; set; }
public DbSet<ProductBackup> ProductBackups { get; set; }
public DbSet<Manufacturer> Manufacturers { get; set; }
public DbSet<ImportData> ImportData { get; set; }
public DbSet<ImportMetric> ImportMetrics { get; set; }
public DbSet<PartData> PartData { get; set; }
public DbSet<PartImage> PartImages { get; set; }
public DbSet<PartPrice> PartPrices { get; set; }
public DbSet<Part> Parts { get; set; }
public DbSet<Vehicle> Vehicles { get; set; }
public DbSet<PartsAvailability> PartAvailabilities { get; set; }
public DbQuery<BaseVehicle> BaseVehicles { get; set; }
public DbQuery<Engine> Engines { get; set; }
public DbQuery<Submodel> Submodels { get; set; }
public DbQuery<VehicleMake> VehicleMakes { get; set; }
public DbQuery<VehicleModel> VehicleModels { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Query<BaseVehicle>().ToView(nameof(BaseVehicle));
modelBuilder.Query<Engine>().ToView(nameof(Engine));
modelBuilder.Query<Submodel>().ToView(nameof(Submodel));
modelBuilder.Query<VehicleMake>().ToView(nameof(VehicleMake));
modelBuilder.Query<VehicleModel>().ToView(nameof(VehicleModel));
modelBuilder.Entity<PartsAvailability>().HasKey(p => new { p.Store, p.SKU });
foreach (IMutableEntityType entityType in modelBuilder.Model.GetEntityTypes())
{
entityType.Relational().TableName = entityType.ClrType.Name;
}
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer("Server=localhost;Database=ps-whi-stage;Trusted_Connection=True;");
}
}
}
}