using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Design; using Microsoft.Extensions.Configuration; namespace ColaFlow.Modules.Mcp.Infrastructure.Persistence; /// /// Design-time factory for McpDbContext (used by EF Core migrations) /// public class McpDbContextFactory : IDesignTimeDbContextFactory { public McpDbContext CreateDbContext(string[] args) { // Build configuration var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false) .AddJsonFile("appsettings.Development.json", optional: true) .AddEnvironmentVariables() .Build(); // Get connection string var connectionString = configuration.GetConnectionString("DefaultConnection"); if (string.IsNullOrEmpty(connectionString)) { throw new InvalidOperationException("Connection string 'DefaultConnection' not found."); } // Build DbContextOptions var optionsBuilder = new DbContextOptionsBuilder(); optionsBuilder.UseNpgsql(connectionString); return new McpDbContext(optionsBuilder.Options); } }