| | | 1 | | using Microsoft.EntityFrameworkCore; |
| | | 2 | | using Microsoft.EntityFrameworkCore.Design; |
| | | 3 | | using OzonRepositories.Utils; |
| | | 4 | | |
| | | 5 | | namespace OzonRepositories.Context.Identity; |
| | | 6 | | |
| | | 7 | | /// <summary> |
| | | 8 | | /// Design-time factory для EF-тулинга (dotnet ef migrations add/database update). |
| | | 9 | | /// Без неё тулинг поднимал контекст через DI стартап-проекта и уходил в базу из |
| | | 10 | | /// appsettings — то есть в реальную ST2. Строка берётся только из EF_DESIGN_CONNECTION: |
| | | 11 | | /// export EF_DESIGN_CONNECTION="Server=...;Database=...;User=...;Password=...;" |
| | | 12 | | /// В рантайме не используется. |
| | | 13 | | /// </summary> |
| | | 14 | | public class OzonIdentityOrderContextFactory : IDesignTimeDbContextFactory<OzonIdentityOrderContext> |
| | | 15 | | { |
| | | 16 | | public OzonIdentityOrderContext CreateDbContext(string[] args) |
| | | 17 | | { |
| | 0 | 18 | | var optionsBuilder = new DbContextOptionsBuilder<OzonIdentityOrderContext>(); |
| | | 19 | | |
| | 0 | 20 | | string connectionString = |
| | 0 | 21 | | Environment.GetEnvironmentVariable("EF_DESIGN_CONNECTION") |
| | 0 | 22 | | ?? throw new InvalidOperationException( |
| | 0 | 23 | | "EF_DESIGN_CONNECTION environment variable is not set. " + |
| | 0 | 24 | | "Set it to a valid MySQL connection string before running EF tooling."); |
| | | 25 | | |
| | 0 | 26 | | optionsBuilder.UseMySql(connectionString, St2MariaDb.ServerVersion); |
| | | 27 | | |
| | 0 | 28 | | return new OzonIdentityOrderContext(optionsBuilder.Options); |
| | | 29 | | } |
| | | 30 | | } |