Files
Operation-Blue-Laminate-v2/BlueLaminate/BlueLaminate.EFCore/Data/SkinTrackerDbContextFactory.cs
2026-05-29 13:13:11 -05:00

33 lines
1.3 KiB
C#

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
namespace BlueLaminate.EFCore.Data;
public class SkinTrackerDbContextFactory : IDesignTimeDbContextFactory<SkinTrackerDbContext>
{
public SkinTrackerDbContext CreateDbContext(string[] args)
{
var connectionString = BuildConfiguration().GetConnectionString("SkinTracker")
?? throw new InvalidOperationException(
"Connection string 'SkinTracker' is not configured. "
+ "Set it via user secrets (dev) or the ConnectionStrings__SkinTracker environment variable (prod).");
var options = new DbContextOptionsBuilder<SkinTrackerDbContext>()
.UseNpgsql(connectionString, npgsql =>
npgsql.MigrationsHistoryTable("__EFMigrationsHistory", SkinTrackerDbContext.Schema))
.UseSnakeCaseNamingConvention()
.Options;
return new SkinTrackerDbContext(options);
}
public static IConfiguration BuildConfiguration() =>
new ConfigurationBuilder()
.SetBasePath(AppContext.BaseDirectory)
.AddJsonFile("appsettings.json", optional: true)
.AddUserSecrets<SkinTrackerDbContextFactory>(optional: true)
.AddEnvironmentVariables()
.Build();
}