fix AppDbContext migrate issue
This commit is contained in:
@@ -0,0 +1,39 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Design;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Design-time factory for EF tools and the CD migrations bundle.
|
||||||
|
/// Without this, the bundle tries to bootstrap Program.cs (JWT/MinIO/etc.) and fails
|
||||||
|
/// when those settings are absent next to ./migrate-api; --connection then never applies.
|
||||||
|
/// </summary>
|
||||||
|
public class AppDbContextFactory : IDesignTimeDbContextFactory<AppDbContext>
|
||||||
|
{
|
||||||
|
public AppDbContext CreateDbContext(string[] args)
|
||||||
|
{
|
||||||
|
var optionsBuilder = new DbContextOptionsBuilder<AppDbContext>();
|
||||||
|
optionsBuilder.UseNpgsql(ResolveConnectionString());
|
||||||
|
return new AppDbContext(optionsBuilder.Options);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string ResolveConnectionString()
|
||||||
|
{
|
||||||
|
var fromEnv = Environment.GetEnvironmentVariable("ConnectionStrings__DefaultConnection");
|
||||||
|
if (!string.IsNullOrWhiteSpace(fromEnv))
|
||||||
|
return fromEnv;
|
||||||
|
|
||||||
|
var config = new ConfigurationBuilder()
|
||||||
|
.SetBasePath(Directory.GetCurrentDirectory())
|
||||||
|
.AddJsonFile("appsettings.json", optional: true)
|
||||||
|
.AddJsonFile("appsettings.Development.json", optional: true)
|
||||||
|
.AddEnvironmentVariables()
|
||||||
|
.Build();
|
||||||
|
|
||||||
|
var fromConfig = config.GetConnectionString("DefaultConnection");
|
||||||
|
if (!string.IsNullOrWhiteSpace(fromConfig))
|
||||||
|
return fromConfig;
|
||||||
|
|
||||||
|
// Placeholder so the factory can construct a context; migrate-api --connection
|
||||||
|
// replaces this when applying migrations in CD.
|
||||||
|
return "Host=127.0.0.1;Database=ef_design;Username=ef;Password=ef";
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user