diff --git a/src/Infrastructure/TakeoutSaaS.Infrastructure/App/Persistence/AppDataSeeder.cs b/src/Infrastructure/TakeoutSaaS.Infrastructure/App/Persistence/AppDataSeeder.cs index d2926e1..4072f0c 100644 --- a/src/Infrastructure/TakeoutSaaS.Infrastructure/App/Persistence/AppDataSeeder.cs +++ b/src/Infrastructure/TakeoutSaaS.Infrastructure/App/Persistence/AppDataSeeder.cs @@ -318,6 +318,12 @@ public sealed class AppDataSeeder( long tenantId, CancellationToken cancellationToken) { + // 确保分组已持久化以获取正确的主键,避免 FK 约束报错。 + if (!dbContext.Entry(group).IsKeySet || group.Id == 0) + { + await dbContext.SaveChangesAsync(cancellationToken); + } + var materializedItems = seedItems .Where(item => !string.IsNullOrWhiteSpace(item.Key) && !string.IsNullOrWhiteSpace(item.Value)) .ToList();