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 DcfMappings { get; set; } public DbSet Fitments { 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 VehicleMakes { get; set; } public DbSet VehicleModels { get; set; } public DbSet VehicleData { get; set; } public DbSet PartAvailabilities { get; set; } public DbQuery BaseVehicles { get; set; } public DbQuery Engines { get; set; } public DbQuery Submodels { 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.Entity().HasKey(p => new { p.Store, p.SKU }); modelBuilder.Entity().HasKey(d => new { d.LineCode, d.WhiCode }); modelBuilder.Entity().HasKey(f => new { f.BaseVehicleId, f.EngineConfigId, f.LineCode, f.PartNumber }); 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=(localdb)\\mssqllocaldb;Database=PartSource;Trusted_Connection=True;"); } } } }