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 contextOptions) : base(contextOptions) { } public DbSet ApiClients { get; set; } public DbSet ProductBackups { get; set; } public DbSet Manufacturers { get; set; } public DbSet ImportData { get; set; } public DbSet ImportMetrics { get; set; } public DbSet PartData { get; set; } public DbSet PartImages { get; set; } public DbSet PartPrices { get; set; } public DbSet Parts { get; set; } public DbSet Vehicles { get; set; } public DbSet PartAvailabilities { get; set; } public DbQuery BaseVehicles { get; set; } public DbQuery Engines { get; set; } public DbQuery Submodels { get; set; } public DbQuery VehicleMakes { get; set; } public DbQuery VehicleModels { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Query().ToView(nameof(BaseVehicle)); modelBuilder.Query().ToView(nameof(Engine)); modelBuilder.Query().ToView(nameof(Submodel)); modelBuilder.Query().ToView(nameof(VehicleMake)); modelBuilder.Query().ToView(nameof(VehicleModel)); modelBuilder.Entity().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;"); } } } }