fix: Use EnsureCreatedAsync instead of MigrateAsync for initial db setup
All checks were successful
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 2m9s

- EnsureCreatedAsync creates db only if it doesn't exist
- Returns false if db already exists (idempotent)
- Prevents 'CMS.mdf already exists' error
- Still applies pending migrations when needed
This commit is contained in:
masoud
2025-12-07 21:21:47 +00:00
parent 7ec9c4077c
commit 1dbe90d020

View File

@@ -23,28 +23,24 @@ public class ApplicationDbContextInitialiser
{ {
if (_context.Database.IsSqlServer()) if (_context.Database.IsSqlServer())
{ {
// Check if database already exists and has pending migrations // Use EnsureCreated for initial setup, then apply migrations
bool dbExists = await _context.Database.CanConnectAsync(); // EnsureCreated is idempotent - safe to call multiple times
var created = await _context.Database.EnsureCreatedAsync();
if (dbExists) if (!created)
{ {
_logger.LogInformation("Database exists, checking for pending migrations..."); // Database exists, check for pending migrations
var pendingMigrations = await _context.Database.GetPendingMigrationsAsync(); _logger.LogInformation("Database already exists, checking for migrations...");
var pending = await _context.Database.GetPendingMigrationsAsync();
if (pendingMigrations.Any()) if (pending.Any())
{ {
_logger.LogInformation("Applying {Count} pending migrations", pendingMigrations.Count()); _logger.LogInformation("Applying {Count} pending migrations", pending.Count());
await _context.Database.MigrateAsync(); await _context.Database.MigrateAsync();
} }
else
{
_logger.LogInformation("Database is up to date, no migrations needed");
}
} }
else else
{ {
_logger.LogInformation("Database does not exist, creating and migrating..."); _logger.LogInformation("Database created successfully");
await _context.Database.MigrateAsync();
} }
} }
} }