init efcore
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
using BlueLaminate.EFCore.Configurations;
|
||||
using BlueLaminate.EFCore.Entities;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace BlueLaminate.EFCore.Data;
|
||||
|
||||
public class SkinTrackerDbContext : DbContext
|
||||
{
|
||||
static SkinTrackerDbContext()
|
||||
{
|
||||
// Store and read all timestamps as UTC (timestamptz). Required so that
|
||||
// DateTimeOffset properties round-trip correctly with Npgsql.
|
||||
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", false);
|
||||
}
|
||||
|
||||
public SkinTrackerDbContext(DbContextOptions<SkinTrackerDbContext> options)
|
||||
: base(options)
|
||||
{
|
||||
}
|
||||
|
||||
public DbSet<Weapon> Weapons => Set<Weapon>();
|
||||
public DbSet<Skin> Skins => Set<Skin>();
|
||||
public DbSet<SkinCondition> SkinConditions => Set<SkinCondition>();
|
||||
public DbSet<SteamUser> SteamUsers => Set<SteamUser>();
|
||||
public DbSet<SkinInstance> SkinInstances => Set<SkinInstance>();
|
||||
public DbSet<InventoryItem> InventoryItems => Set<InventoryItem>();
|
||||
public DbSet<Trade> Trades => Set<Trade>();
|
||||
public DbSet<TradeItem> TradeItems => Set<TradeItem>();
|
||||
public DbSet<PriceHistory> PriceHistories => Set<PriceHistory>();
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.ApplyConfiguration(new SkinConfiguration());
|
||||
modelBuilder.ApplyConfiguration(new SkinConditionConfiguration());
|
||||
modelBuilder.ApplyConfiguration(new SteamUserConfiguration());
|
||||
modelBuilder.ApplyConfiguration(new SkinInstanceConfiguration());
|
||||
modelBuilder.ApplyConfiguration(new InventoryItemConfiguration());
|
||||
modelBuilder.ApplyConfiguration(new TradeConfiguration());
|
||||
modelBuilder.ApplyConfiguration(new TradeItemConfiguration());
|
||||
modelBuilder.ApplyConfiguration(new PriceHistoryConfiguration());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Design;
|
||||
|
||||
namespace BlueLaminate.EFCore.Data;
|
||||
|
||||
public class SkinTrackerDbContextFactory : IDesignTimeDbContextFactory<SkinTrackerDbContext>
|
||||
{
|
||||
public SkinTrackerDbContext CreateDbContext(string[] args)
|
||||
{
|
||||
var connectionString =
|
||||
Environment.GetEnvironmentVariable("SKINTRACKER_CONNECTION")
|
||||
?? "Host=localhost;Port=5432;Database=skintracker;Username=postgres;Password=postgres";
|
||||
|
||||
var options = new DbContextOptionsBuilder<SkinTrackerDbContext>()
|
||||
.UseNpgsql(connectionString)
|
||||
.UseSnakeCaseNamingConvention()
|
||||
.Options;
|
||||
|
||||
return new SkinTrackerDbContext(options);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user