Files
Partsource/PartSource.Data/Contexts/PartSourceContext.cs

77 lines
2.5 KiB
C#

using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using PartSource.Data.Converters;
using PartSource.Data.Models;
namespace PartSource.Data.Contexts
{
public class PartSourceContext : DbContext
{
public PartSourceContext(DbContextOptions<PartSourceContext> contextOptions)
: base(contextOptions) { }
public DbSet<ApiClient> ApiClients { get; set; }
public DbSet<DcfMapping> DcfMappings { 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<ShopifyChangelog> ShopifyChangelogs { get; set; }
public DbSet<Vehicle> Vehicles { get; set; }
public DbSet<PartAvailability> PartAvailabilities { get; set; }
public DbSet<BaseVehicle> BaseVehicles { get; set; }
public DbSet<Engine> Engines { get; set; }
public DbSet<Submodel> Submodels { get; set; }
public DbSet<VehicleMake> VehicleMakes { get; set; }
public DbSet<VehicleModel> VehicleModels { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<PartAvailability>().HasKey(p => new { p.Store, p.SKU });
modelBuilder.Entity<DcfMapping>().HasKey(d => new { d.LineCode, d.WhiCode });
modelBuilder.Entity<ShopifyChangelog>()
.Property(s => s.ResourceType)
.HasConversion(new TypeToStringConverter());
modelBuilder.Entity<ShopifyChangelog>()
.Property(s => s.Data)
.HasConversion(new ObjectToJsonConverter());
foreach (IMutableEntityType entityType in modelBuilder.Model.GetEntityTypes())
{
entityType.SetTableName(entityType.ClrType.Name);
}
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer("Server=localhost;Database=ps-whi-stage;Trusted_Connection=True;");
}
}
}
}