From 2c086d114981972de86b6a2d6fb41542796215b7 Mon Sep 17 00:00:00 2001 From: MSuMshk <2039814060@qq.com> Date: Wed, 18 Feb 2026 20:41:22 +0800 Subject: [PATCH] fix(infra): auto-apply app and dictionary migrations on startup --- .../App/Persistence/AppDataSeeder.cs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Infrastructure/TakeoutSaaS.Infrastructure/App/Persistence/AppDataSeeder.cs b/src/Infrastructure/TakeoutSaaS.Infrastructure/App/Persistence/AppDataSeeder.cs index 079a573..d679268 100644 --- a/src/Infrastructure/TakeoutSaaS.Infrastructure/App/Persistence/AppDataSeeder.cs +++ b/src/Infrastructure/TakeoutSaaS.Infrastructure/App/Persistence/AppDataSeeder.cs @@ -30,17 +30,23 @@ public sealed class AppDataSeeder( /// public async Task StartAsync(CancellationToken cancellationToken) { - if (!_options.Enabled) - { - logger.LogInformation("AppSeed 未启用,跳过业务数据初始化"); - return; - } - using var scope = serviceProvider.CreateScope(); var appDbContext = scope.ServiceProvider.GetRequiredService(); var dictionaryDbContext = scope.ServiceProvider.GetRequiredService(); + + // 1. 启动时优先确保 App/Dictionary 数据库迁移到最新版本。 + await appDbContext.Database.MigrateAsync(cancellationToken); + await dictionaryDbContext.Database.MigrateAsync(cancellationToken); + + if (!_options.Enabled) + { + logger.LogInformation("AppSeed 未启用,仅执行数据库迁移,跳过业务数据初始化"); + return; + } + var tenantContextAccessor = scope.ServiceProvider.GetRequiredService(); + // 2. 执行业务数据种子。 await EnsureSystemTenantAsync(appDbContext, cancellationToken); var defaultTenantId = await EnsureDefaultTenantAsync(appDbContext, cancellationToken); await EnsureDictionarySeedsAsync(dictionaryDbContext, tenantContextAccessor, defaultTenantId, cancellationToken);