public async Task EnsureInitializedAsync(Func<bool>? dropDbCondition = null, CancellationToken cancellationToken = default)
{
bool allMigrationsApplied = await AreAllMigrationsAppliedAsync(cancellationToken);
if (allMigrationsApplied)
{
_logger.LogInformation("All migrations are already applied");
return;
}
_logger.LogInformation("Some migrations must be applied");
if (dropDbCondition?.Invoke() == true)
{
_logger.LogInformation("Deleting database...");
await _context.Database.EnsureDeletedAsync(cancellationToken);
_logger.LogInformation("Database deleted");
}
_logger.LogInformation("Applying migrations...");
await _context.Database.MigrateAsync(cancellationToken: cancellationToken);
_logger.LogInformation("Migrations applied");
}
public async Task EnsureInitializedAsync(Func<bool>? dropDbCondition = null, CancellationToken cancellationToken = default)
{
bool allMigrationsApplied = await AreAllMigrationsAppliedAsync(cancellationToken);
if (allMigrationsApplied)
{
_logger.LogInformation("All migrations are already applied");
return;
}
_logger.LogInformation("Some migrations must be applied");
if (dropDbCondition?.Invoke() == true)
{
_logger.LogInformation("Deleting database...");
await _context.Database.EnsureDeletedAsync(cancellationToken);
_logger.LogInformation("Database deleted");
}
_logger.LogInformation("Applying migrations...");
await _context.Database.MigrateAsync(cancellationToken: cancellationToken);
_logger.LogInformation("Migrations applied");
}