namespace MyOffice.Web.Infrastructure;
using DbContext;
///
/// Runs EF migrate + seed on startup with a scoped DbContext.
///
public sealed class DatabaseInitializerHostedService : IHostedService
{
private readonly IServiceProvider _serviceProvider;
private readonly ILogger _logger;
public DatabaseInitializerHostedService(
IServiceProvider serviceProvider,
ILogger logger
)
{
_serviceProvider = serviceProvider;
_logger = logger;
}
public async Task StartAsync(CancellationToken cancellationToken)
{
await using var scope = _serviceProvider.CreateAsyncScope();
var db = scope.ServiceProvider.GetRequiredService();
_logger.LogInformation("Applying database migrations and seed data…");
await DatabaseBootstrapper.InitializeAsync(db, cancellationToken);
_logger.LogInformation("Database ready.");
}
public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
}