From be86e48de6a00bb7e156d4f0a42efd731292f2c7 Mon Sep 17 00:00:00 2001 From: Ho Ngoc Hai Date: Sat, 28 Feb 2026 00:51:35 +0700 Subject: [PATCH] feat: automatically apply EF Core database migrations on service startup across all services --- .../src/AdsAnalyticsService.API/Program.cs | 9 +++++++++ .../src/AdsBillingService.API/Program.cs | 9 +++++++++ .../src/AdsManagerService.API/Program.cs | 9 +++++++++ .../src/AdsServingService.API/Program.cs | 9 +++++++++ .../src/AdsTrackingService.API/Program.cs | 9 +++++++++ .../src/BookingService.API/Program.cs | 9 +++++++++ .../src/CatalogService.API/Program.cs | 9 +++++++++ .../chat-service-net/src/ChatService.API/Program.cs | 9 +++++++++ services/fnb-engine-net/src/FnbEngine.API/Program.cs | 9 +++++++++ .../src/InventoryService.API/Program.cs | 9 +++++++++ .../src/MembershipService.API/Program.cs | 9 +++++++++ .../src/MerchantService.API/Program.cs | 9 +++++++++ .../src/MiningService.API/Program.cs | 9 +++++++++ .../src/MissionService.API/Program.cs | 9 +++++++++ .../order-service-net/src/OrderService.API/Program.cs | 9 +++++++++ .../src/PromotionService.API/Program.cs | 9 +++++++++ .../src/SocialService.API/Program.cs | 9 +++++++++ .../src/StorageService.API/Program.cs | 10 ++++++++++ .../src/WalletService.API/Program.cs | 9 +++++++++ 19 files changed, 172 insertions(+) diff --git a/services/ads-analytics-service-net/src/AdsAnalyticsService.API/Program.cs b/services/ads-analytics-service-net/src/AdsAnalyticsService.API/Program.cs index f4df5637..ed0e5bab 100644 --- a/services/ads-analytics-service-net/src/AdsAnalyticsService.API/Program.cs +++ b/services/ads-analytics-service-net/src/AdsAnalyticsService.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using FluentValidation; using Hellang.Middleware.ProblemDetails; @@ -127,6 +128,14 @@ try app.MapControllers(); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/ads-billing-service-net/src/AdsBillingService.API/Program.cs b/services/ads-billing-service-net/src/AdsBillingService.API/Program.cs index 41785b75..11a93ee5 100644 --- a/services/ads-billing-service-net/src/AdsBillingService.API/Program.cs +++ b/services/ads-billing-service-net/src/AdsBillingService.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using FluentValidation; using Hellang.Middleware.ProblemDetails; @@ -127,6 +128,14 @@ try app.MapControllers(); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/ads-manager-service-net/src/AdsManagerService.API/Program.cs b/services/ads-manager-service-net/src/AdsManagerService.API/Program.cs index f1484dd3..1ba3015e 100644 --- a/services/ads-manager-service-net/src/AdsManagerService.API/Program.cs +++ b/services/ads-manager-service-net/src/AdsManagerService.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using FluentValidation; using Hellang.Middleware.ProblemDetails; @@ -127,6 +128,14 @@ try app.MapControllers(); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/ads-serving-service-net/src/AdsServingService.API/Program.cs b/services/ads-serving-service-net/src/AdsServingService.API/Program.cs index f788dadb..64134afe 100644 --- a/services/ads-serving-service-net/src/AdsServingService.API/Program.cs +++ b/services/ads-serving-service-net/src/AdsServingService.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using AdsServingService.API.Application.Events; using AdsServingService.API.Application.Services; @@ -132,6 +133,14 @@ try app.MapControllers(); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/ads-tracking-service-net/src/AdsTrackingService.API/Program.cs b/services/ads-tracking-service-net/src/AdsTrackingService.API/Program.cs index a45186ff..b366e381 100644 --- a/services/ads-tracking-service-net/src/AdsTrackingService.API/Program.cs +++ b/services/ads-tracking-service-net/src/AdsTrackingService.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using FluentValidation; using Hellang.Middleware.ProblemDetails; @@ -127,6 +128,14 @@ try app.MapControllers(); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/booking-service-net/src/BookingService.API/Program.cs b/services/booking-service-net/src/BookingService.API/Program.cs index c0c625c5..83e4a7e9 100644 --- a/services/booking-service-net/src/BookingService.API/Program.cs +++ b/services/booking-service-net/src/BookingService.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using FluentValidation; using Hellang.Middleware.ProblemDetails; @@ -146,6 +147,14 @@ try app.MapControllers(); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/catalog-service-net/src/CatalogService.API/Program.cs b/services/catalog-service-net/src/CatalogService.API/Program.cs index ad831e6d..68bd2b28 100644 --- a/services/catalog-service-net/src/CatalogService.API/Program.cs +++ b/services/catalog-service-net/src/CatalogService.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using FluentValidation; using Hellang.Middleware.ProblemDetails; @@ -146,6 +147,14 @@ try app.MapControllers(); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/chat-service-net/src/ChatService.API/Program.cs b/services/chat-service-net/src/ChatService.API/Program.cs index 1cc38264..3026900b 100644 --- a/services/chat-service-net/src/ChatService.API/Program.cs +++ b/services/chat-service-net/src/ChatService.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using FluentValidation; using Hellang.Middleware.ProblemDetails; @@ -202,6 +203,14 @@ try }); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/fnb-engine-net/src/FnbEngine.API/Program.cs b/services/fnb-engine-net/src/FnbEngine.API/Program.cs index 41def73e..d7bc32c1 100644 --- a/services/fnb-engine-net/src/FnbEngine.API/Program.cs +++ b/services/fnb-engine-net/src/FnbEngine.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using FluentValidation; using Hellang.Middleware.ProblemDetails; @@ -146,6 +147,14 @@ try app.MapControllers(); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/inventory-service-net/src/InventoryService.API/Program.cs b/services/inventory-service-net/src/InventoryService.API/Program.cs index 1ba264b1..7bc4c91a 100644 --- a/services/inventory-service-net/src/InventoryService.API/Program.cs +++ b/services/inventory-service-net/src/InventoryService.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using FluentValidation; using Hellang.Middleware.ProblemDetails; @@ -149,6 +150,14 @@ try app.MapControllers(); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/membership-service-net/src/MembershipService.API/Program.cs b/services/membership-service-net/src/MembershipService.API/Program.cs index 0bb4b923..c003cd54 100644 --- a/services/membership-service-net/src/MembershipService.API/Program.cs +++ b/services/membership-service-net/src/MembershipService.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using FluentValidation; using Hellang.Middleware.ProblemDetails; @@ -197,6 +198,14 @@ try app.MapControllers(); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/merchant-service-net/src/MerchantService.API/Program.cs b/services/merchant-service-net/src/MerchantService.API/Program.cs index 21e1e4e6..56c6fd5c 100644 --- a/services/merchant-service-net/src/MerchantService.API/Program.cs +++ b/services/merchant-service-net/src/MerchantService.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using FluentValidation; using Hellang.Middleware.ProblemDetails; @@ -150,6 +151,14 @@ try app.MapControllers(); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/mining-service-net/src/MiningService.API/Program.cs b/services/mining-service-net/src/MiningService.API/Program.cs index 8271c365..5eaf53cf 100644 --- a/services/mining-service-net/src/MiningService.API/Program.cs +++ b/services/mining-service-net/src/MiningService.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using FluentValidation; using Hellang.Middleware.ProblemDetails; @@ -217,6 +218,14 @@ try app.MapHub("/hubs/mining"); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/mission-service-net/src/MissionService.API/Program.cs b/services/mission-service-net/src/MissionService.API/Program.cs index 16e902c4..a4fa12da 100644 --- a/services/mission-service-net/src/MissionService.API/Program.cs +++ b/services/mission-service-net/src/MissionService.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using FluentValidation; using Hellang.Middleware.ProblemDetails; @@ -147,6 +148,14 @@ try app.MapControllers(); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/order-service-net/src/OrderService.API/Program.cs b/services/order-service-net/src/OrderService.API/Program.cs index 615c9afe..e433d7c7 100644 --- a/services/order-service-net/src/OrderService.API/Program.cs +++ b/services/order-service-net/src/OrderService.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using System.Data; using Asp.Versioning; using FluentValidation; @@ -209,6 +210,14 @@ try app.MapControllers(); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/promotion-service-net/src/PromotionService.API/Program.cs b/services/promotion-service-net/src/PromotionService.API/Program.cs index ddddc9c3..5c93ac3a 100644 --- a/services/promotion-service-net/src/PromotionService.API/Program.cs +++ b/services/promotion-service-net/src/PromotionService.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using FluentValidation; using Hellang.Middleware.ProblemDetails; @@ -191,6 +192,14 @@ try app.MapControllers(); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/social-service-net/src/SocialService.API/Program.cs b/services/social-service-net/src/SocialService.API/Program.cs index b750dca9..8a8722da 100644 --- a/services/social-service-net/src/SocialService.API/Program.cs +++ b/services/social-service-net/src/SocialService.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using FluentValidation; using Hellang.Middleware.ProblemDetails; @@ -153,6 +154,14 @@ try app.MapControllers(); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/storage-service-net/src/StorageService.API/Program.cs b/services/storage-service-net/src/StorageService.API/Program.cs index 4b9135b3..48a0a204 100644 --- a/services/storage-service-net/src/StorageService.API/Program.cs +++ b/services/storage-service-net/src/StorageService.API/Program.cs @@ -1,9 +1,11 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using Asp.Versioning.ApiExplorer; using FluentValidation; using Hellang.Middleware.ProblemDetails; using StorageService.API.Application.Behaviors; using StorageService.Infrastructure; +using StorageService.Infrastructure.Persistence; using Serilog; using Microsoft.Extensions.Options; using Swashbuckle.AspNetCore.SwaggerGen; @@ -181,6 +183,14 @@ try app.MapControllers(); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex) diff --git a/services/wallet-service-net/src/WalletService.API/Program.cs b/services/wallet-service-net/src/WalletService.API/Program.cs index accd4a60..930756d0 100644 --- a/services/wallet-service-net/src/WalletService.API/Program.cs +++ b/services/wallet-service-net/src/WalletService.API/Program.cs @@ -1,3 +1,4 @@ +using Microsoft.EntityFrameworkCore; using Asp.Versioning; using FluentValidation; using Hellang.Middleware.ProblemDetails; @@ -176,6 +177,14 @@ try app.MapControllers(); // EN: Run the application / VI: Chạy ứng dụng + // EN: Auto-apply EF Core migrations on startup + // VI: Tự động áp dụng EF Core migrations khi khởi động + using (var scope = app.Services.CreateScope()) + { + var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(); + } + app.Run(); } catch (Exception ex)