diff --git a/BervProject.WebApi.Boilerplate/Data/DesignTimeDbContextFactory.cs b/BervProject.WebApi.Boilerplate/Data/DesignTimeDbContextFactory.cs new file mode 100644 index 00000000..f79b4c91 --- /dev/null +++ b/BervProject.WebApi.Boilerplate/Data/DesignTimeDbContextFactory.cs @@ -0,0 +1,24 @@ +using BervProject.WebApi.Boilerplate.EntityFramework; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Design; +using Microsoft.Extensions.Configuration; +using System; +using System.IO; + +namespace BervProject.WebApi.Boilerplate.Data; + +public class DesignTimeDbContextFactory : IDesignTimeDbContextFactory +{ + public BoilerplateDbContext CreateDbContext(string[] args) + { + var configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .Build(); + + var optionsBuilder = new DbContextOptionsBuilder(); + optionsBuilder.UseNpgsql(configuration.GetConnectionString("BoilerplateConnectionString")); + + return new BoilerplateDbContext(optionsBuilder.Options); + } +} diff --git a/BervProject.WebApi.Boilerplate/EntityFramework/BoilerplateDbContext.cs b/BervProject.WebApi.Boilerplate/EntityFramework/BoilerplateDbContext.cs index 9e262869..c00fd3af 100644 --- a/BervProject.WebApi.Boilerplate/EntityFramework/BoilerplateDbContext.cs +++ b/BervProject.WebApi.Boilerplate/EntityFramework/BoilerplateDbContext.cs @@ -1,4 +1,5 @@ -using BervProject.WebApi.Boilerplate.Entities; +using System; +using BervProject.WebApi.Boilerplate.Entities; using Microsoft.EntityFrameworkCore; namespace BervProject.WebApi.Boilerplate.EntityFramework @@ -34,6 +35,22 @@ public BoilerplateDbContext(DbContextOptions options) : base(options) } + /// + /// Configure DbContext for migrations + /// + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + if (!optionsBuilder.IsConfigured) + { + var connectionString = Environment.GetEnvironmentVariable("ConnectionStrings__BoilerplateConnectionString"); + if (string.IsNullOrEmpty(connectionString)) + { + connectionString = "Host=localhost;Database=testdb;Username=postgres;Password=postgres"; + } + optionsBuilder.UseNpgsql(connectionString); + } + } + /// /// Adding relationship ///